python二次开发Solidworks:画砂轮

news2025/1/18 9:00:17

先根据输入参数计算出绘制砂轮需要的数据,然后绘制草图,完全标注后生成旋转体,具体代码如下:

import sympy as sy
import numpy as np
import matplotlib.pyplot as plt
'''
x1,y1为第一条直线端点坐标(-10,0),theta_l1为角度,取5*np.pi/3
l1为第一条直线的长度,取值2
x2,y2为第二条直线端点坐标(10,0),theta_l2为角度,取4*np.pi/3
x3,y3为第二条直线端点坐标,由其参数方程确定
l2为第二条直线的长度,取值3
r1为第一条圆弧的半径,取值3
r2为第二条圆弧的半径,待求解
l为直线方程的参数
x,y为未知数
d为
theta为圆方程的参数
'''
#输入参数
Line1_p1=[-10,0]
Line1_angle=5*np.pi/3
Line1_length=5
Line2_p1=[10,0]
Line2_angle=4*np.pi/3
Line2_length=3
Arc1_r=8
Arc1_angle=np.pi/6
#定义符号变量
x1,y1,x2,y2,l1,l2,theta_l1,theta_l2=sy.symbols('x1,y1,x2,y2,l1,l2,theta_l1,theta_l2')
r1,theta_arc1_start,theta_arc1_end,xr1_center,yr1_center=sy.symbols('r1,theta_arc1_start,theta_arc1_end,xr1_center,yr1_center')
r2,theta_arc2,theta_arc2_start=sy.symbols('r2,theta_arc2,theta_arc2_start')
l,theta,x,y,d,da=sy.symbols('l,theta,x,y,d,da')
#points存储重要的点坐标
points=[]
#存直线1的起点坐标,第1点
points.append(Line1_p1)
#存直线2的起点坐标,第2点
points.append(Line2_p1)
​
#第一条直线的参数方程,x1=Line1_p1[0],y1=Line1_p1[1],theta_l1=Line1_angle,l为参数
xl1=x1+l*sy.cos(theta_l1)
yl1=y1+l*sy.sin(theta_l1)
​
​
fig=plt.figure(figsize=(5,5))
plt.rcParams['xtick.direction'] = 'in'  # 将x周的刻度线方向设置向内
plt.rcParams['ytick.direction'] = 'in'  # 将y轴的刻度方向设置向内
#生成直线1的横坐标,l1=Line1_length
a=np.arange(0, Line1_length, 0.01)
#计算直线1数据点并绘图
h0L1=xl1.subs([(x1,Line1_p1[0]),(theta_l1,Line1_angle)])
h1L1=yl1.subs([(y1,Line1_p1[1]),(theta_l1,Line1_angle)])
data_l1_x=[]
data_l1_y=[]
for i in a:
    data_l1_x.append(h0L1.subs([(l,i)]))
    data_l1_y.append(h1L1.subs([(l,i)]))
plt.plot(data_l1_x,data_l1_y,c='blue')
​
#存直线1的终点坐标,也就是圆弧1的起点坐标,第3点
points.append([data_l1_x[-1],data_l1_y[-1]])
​
#圆弧1初始角度
theta_arc1_start=theta_l1-np.pi/2
start=theta_arc1_start.subs([(theta_l1,Line1_angle)])
#圆弧1终止角度,圆心角取np.pi/3
theta_arc1_end=theta_arc1_start+theta
end=theta_arc1_end.subs([(theta_arc1_start,start),(theta,Arc1_angle)])
#圆弧1的圆心,r1=3,l1=2
xr1_center=x1+l1*sy.cos(theta_l1)+r1*sy.cos(theta_l1+np.pi/2)
yr1_center=y1+l1*sy.sin(theta_l1)+r1*sy.sin(theta_l1+np.pi/2)
​
#存圆弧1的圆心点坐标,第4点
o1x=xr1_center.subs([(x1,Line1_p1[0]),(theta_l1,Line1_angle),(l1,Line1_length),(r1,Arc1_r)])
o1y=yr1_center.subs([(y1,Line1_p1[1]),(theta_l1,Line1_angle),(l1,Line1_length),(r1,Arc1_r)])
points.append([o1x,o1y])
​
#第一条圆弧上任意一点的坐标
xr1=xr1_center+r1*sy.cos(theta)
yr1=yr1_center+r1*sy.sin(theta)
​
​
#计算圆弧1坐标并作图
b=np.arange(start,end, 0.01)
h0R1=xr1.subs([(x1,Line1_p1[0]),(theta_l1,Line1_angle),(r1,3),(l1,Line1_length)])
h1R1=yr1.subs([(y1,Line1_p1[1]),(theta_l1,Line1_angle),(r1,3),(l1,Line1_length)])
data_r1_x=[]
data_r1_y=[]
for i in b:
    data_r1_x.append(h0R1.subs([(theta, i)]))
    data_r1_y.append(h1R1.subs([(theta, i)]))
plt.plot(data_r1_x,data_r1_y,c='red')
​
​
#存圆弧1终止点,,第5点
points.append([data_r1_x[-1],data_r1_y[-1]])
​
​
​
#第二条直线的参数方程,x2=10,y2=0,theta_l2=4*np.pi/3,l为参数
xl2=x2+l*sy.cos(theta_l2)
yl2=y2+l*sy.sin(theta_l2)
#生成直线1的横坐标,l2=3
d=np.arange(0, 3, 0.01)
#计算直线2数据点并绘图
h0L2=xl2.subs([(x2,Line2_p1[0]),(theta_l2,Line2_angle)])
h1L2=yl2.subs([(y2,Line2_p1[1]),(theta_l2,Line2_angle)])
data_l2_x=[]
data_l2_y=[]
for i in d:
    data_l2_x.append(h0L2.subs([(l,i)]))
    data_l2_y.append(h1L2.subs([(l,i)]))
plt.plot(data_l2_x,data_l2_y,c='blue')
​
​
#存直线2终点,,第6点
points.append([data_l2_x[-1],data_l2_y[-1]])
​
#直线2终点处法线方程
x_ln=data_l2_x[-1]+l*sy.cos(theta_l2-np.pi/2)
y_ln=data_l2_y[-1]+l*sy.sin(theta_l2-np.pi/2)
​
lh0=x_ln.subs([(x2, Line2_p1[0]),(theta_l2,Line2_angle),(l2, Line2_length)])
lh1=y_ln.subs([(y2,Line2_p1[1]),(theta_l2,Line2_angle),(l2, Line2_length)])
​
#中垂线方程:不包括斜率不存在的情况
x3=data_r1_x[-1]
y3=data_r1_y[-1]
x4=data_l2_x[-1]
y4=data_l2_y[-1]
flz=(x4-x3)*(x-(x4+x3)/2)+(y4-y3)*(y-(y4+y3)/2)
​
#求解第二条圆弧的圆心及半径
'''
刚开始把exp=[x-lh0,y-lh1,flz]写成exp=[x-lh0,y-lh0,flz]
导致圆弧2圆心及半径求解错误,圆弧2始终与其它段接不上
花了较长时间才找到错误
'''
exp=[x-lh0,y-lh1,flz]
m=sy.solve(exp,[x,y,l])
xr2_center=m[x]
yr2_center=m[y]
r2c=m[l]
#存圆弧2圆心,,第7点
points.append([xr2_center,yr2_center])
​
#求解第二条圆弧的圆心角
fj=r2c*sy.sin(da)-sy.sqrt((x3-x4)**2+(y3-y4)**2)/2
​
theta_arc2=sy.solveset(fj,da,domain=sy.Interval(0,np.pi/2)).args[0]
​
​
#第二条圆弧的初始角度
theta_arc2_start=theta_l2+np.pi/2
#第二条圆弧的终止角度
theta_arc2_end=theta_arc2_start-2*theta_arc2
​
​
​
#第二条圆弧上任意一点的坐标
xr2=xr2_center+r2c*sy.cos(theta)
yr2=yr2_center+r2c*sy.sin(theta)
​
start2=theta_arc2_start.subs([(theta_l2,Line2_angle)])
end2=theta_arc2_end.subs([(theta_l2,Line2_angle)])
p=np.arange(end2,start2, 0.01)
data_r2_x=[]
data_r2_y=[]
for i in p:
    data_r2_x.append(xr2.subs([(theta, i)]))
    data_r2_y.append(yr2.subs([(theta, i)]))
plt.plot(data_r2_x,data_r2_y,c='red')
​
clist = ['blue', 'red', 'green', 'black', 'darkgreen', 'lime', 'gold', 'purple', 'green', 'cyan', 'salmon', 'grey',
             'mediumvioletred', 'darkkhaki', 'gray', 'darkcyan', 'violet', 'powderblue']
markerlst = ['o', '*', 'x', '>', '<', '^', 'D', 'd', '1', '2', '3', '4', 'o', '*', 'x', '>', '<', '^', 'D', 'd',
                 '1', '2', '3', '4', 'o', '*', 'x', '>', '<', '^', 'D', 'd', '1', '2', '3', '4']
plt.xticks(np.linspace(-10,10,11))
plt.yticks(np.linspace(-10, 0.0, 11))
plt.grid(True, linestyle='--', alpha=0.5)
for i in range(len(points)):
    plt.scatter(points[i][0],points[i][1], c=clist[i], marker=markerlst[i],label=f"P{i}")
font1 = {'family': 'SimHei', 'weight': 'normal', 'size': 16}
# 图例展示位置,数字代表第几象限
plt.legend(loc=4,prop=font1,ncol=2,framealpha=0.5)
plt.tight_layout()
plt.show()
​
​
import win32com.client as win32
import pythoncom
​
swApp = win32.Dispatch('sldworks.application')
swApp.Visible = True
Nothing = win32.VARIANT(pythoncom.VT_DISPATCH, None)
Part = swApp.NewDocument(r"C:\ProgramData\SolidWorks\SOLIDWORKS 2016\templates\gb_part.prtdot", 0, 0, 0)
# Part = swApp.ActiveDoc
boolstatus = Part.Extension.SelectByID2("前视基准面", "PLANE", 0, 0, 0, False, 0, Nothing, 0)
Part.SketchManager.InsertSketch(True)
Part.ClearSelection2(True)
Part.SketchManager.CreateLine(points[0][0],points[0][1],0,points[2][0],points[2][1],0)
Part.ClearSelection2(True)
Part.SketchManager.CreateArc(points[3][0],points[3][1],0,points[2][0],points[2][1],0,points[4][0],points[4][1],0,1)
Part.ClearSelection2(True)
Part.SketchManager.CreateArc(points[6][0],points[6][1],0,points[4][0],points[4][1],0,points[5][0],points[5][1],0,1)
Part.ClearSelection2(True)
Part.SketchManager.CreateLine(points[5][0],points[5][1], 0,points[1][0],points[1][1],0)
Part.ClearSelection2(True)
Part.SketchManager.CreateCenterLine(0,5,0,0,-10,0)
Part.ClearSelection2(True)
Part.SketchManager.CreateCenterLine(-12,0,0,12,0,0)
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Point1", "SKETCHPOINT", -10, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 0.157744366042774, 0, -1.91530567862208, True, 0, Nothing, 0)
myDisplayDim = Part.AddDimension2(-5,4,0)
Part.ClearSelection2(True)
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Point1", "SKETCHPOINT", -10, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", -8.77718041256473, -1.03520491789499E-02, 0, True, 0, Nothing, 0)
Part.SketchAddConstraints('sgCOINCIDENT')
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", -8.6434692451422, -2.28344189536183, 0, False, 0, Nothing, 0)
myDisplayDim = Part.AddDimension2(-8.24233574287464, -0.919587987652101, 0)
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", -6.58431726683536, 1.63901843055543E-02, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", -8.88414934650275, -1.88230839309426, 0, True, 0, Nothing, 0)
myDisplayDim = Part.AddDimension2(-12.4943508669108, 1.03259505671672, 0)
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Point8", "SKETCHPOINT", 10, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 3.26156827918567E-03, 1.89203245972462, 0, True, 0, Nothing, 0)
myDisplayDim = Part.AddDimension2(3.97469657891235, 3.95129505783071, 0)
Part.ClearSelection2(True)
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Point8", "SKETCHPOINT", 10, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 8.09322177512453, -9.36850455919629E-02, 0, True, 0, Nothing, 0)
Part.SketchAddConstraints('sgCOINCIDENT')
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 9.08608052778282, -1.45426926219777, 0, False, 0, Nothing, 0)
myDisplayDim = Part.AddDimension2(8.7183550638353, -1.08654379825025, 0)
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", 7.13713556886099, -9.36850455919629E-02, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", 9.19639816696708, -1.41749671580302, 0, True, 0, Nothing, 0)
myDisplayDim = Part.AddDimension2(11.9175666001787, 1.15658153182959, 0)
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Point5", "SKETCHPOINT", -6.41126394835776, -5.42278825446442, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line4", "SKETCHSEGMENT", -6.55131639307265, -0.127252746499565, 0, True, 0, Nothing, 0)
myDisplayDim = Part.AddDimension2(-5.24079660871201, -2.44874493593841, 0)
Part.ClearSelection2(True)
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Point5", "SKETCHPOINT", -6.41126394835776, -5.42278825446442, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line3", "SKETCHSEGMENT", 0.113612795961455, -5.48166215117303, 0, True, 0, Nothing, 0)
myDisplayDim = Part.AddDimension2(-2.20787939347739, -9.63788203871677, 0)
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Arc2", "SKETCHSEGMENT", 2.50999183022091, -7.35383327168823, 0, False, 0, Nothing, 0)
myDisplayDim = Part.AddDimension2(6.36666433848222, -10.6862978662053, 0)
Part.ClearSelection2(True)
Part.SetPickMode
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Point3", "SKETCHPOINT", -6.60104030516506, -5.58829422721332, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Point5", "SKETCHPOINT", -6.41126394835776, -5.42278825446442, 0, True, 0, Nothing, 0)
Part.SketchAddConstraints("sgMERGEPOINTS")
Part.ClearSelection2(True)
boolstatus = Part.Extension.SelectByID2("Arc1", "SKETCHSEGMENT", -7.0380808844066, -4.77023712537726, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line1", "SKETCHSEGMENT", -7.8992795998436, -3.45971734101662, 0, True, 0, Nothing, 0)
Part.SketchAddConstraints("sgTANGENT")
Part.ClearSelection2(True)
Part.SketchManager.CreateLine(-10, 0, 0, -10, 40, 0)
Part.SketchManager.CreateLine(-10, 40, 0, 10, 40, 0)
Part.SketchManager.CreateLine(10, 40, 0, 10, 0, 0)
Part.Extension.SelectByID2("Line7", "SKETCHSEGMENT", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.DeSelectByID("Line7", "SKETCHSEGMENT", 0, 0, 0)
boolstatus = Part.Extension.SelectByID2("Line5", "SKETCHSEGMENT", -9.79560003363511, 21.2523700341158, 0, False, 0, Nothing, 0)
myDisplayDim = Part.AddDimension2(-28.8824799708768, 18.5256729002241, 0)
Part.ClearSelection2(True)
Part.ShowNamedView2("*上下二等角轴测", 8)
boolstatus = Part.Extension.SelectByID2("Line6@草图1", "EXTSKETCHSEGMENT", -93.6539010025325, 25.9402592619527, 0, False, 16, Nothing, 0)
myFeature = Part.FeatureManager.FeatureRevolve2(True, True, False, False, False, False, 0, 0, 6.2831853071796, 0, False, False, 0.01, 0.01, 0, 0, 0, True, True, True)
Part.SelectionManager.EnableContourSelection = False
Part.ViewZoomtofit2()

问题:

绘制草图时出现了一点小问题,以相同的一个端点绘制的两端圆弧的交点却不重合,原因可能是圆心或半径的计算误差所导致的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1107532.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言实现用弦截法求 f(x)=x^3-5*x^2+16*x-80=0 的根

完整代码: //用弦截法求 func(x)x^3-5*x^216*x-800 的根 //弦截法就是用函数上两点&#xff0c;连线的斜率近似代替f(x) //公式为Xn1Xn−(Xn−Xn−1)*func(Xn)/(func(Xn)−f(Xn−1))#include<stdio.h> #include<math.h>//求f(x)的值 double func(double x){return…

博客后台模块

一、后台模块-准备工作 1. 前端工程启动 前端工程下载链接 https://pan.baidu.com/s/1TdFs4TqxlHh4DXyLwYuejQ 提取码&#xff1a;mfkw 项目sql文件下载链接 链接&#xff1a;https://pan.baidu.com/s/1DQCGN4wISSDlOkqnVWYwxA 提取码&#xff1a;mfkw 命令行进入keke-vu…

工业4.0时代数字化工厂的几个特点

随着工业4.0时代的到来&#xff0c;数字化工厂成为了制造业的重要组成部分。数字化工厂管理系统是一种应用数字化、自动化和物联网等技术与产业融合的全新生产方式&#xff0c;旨在提高生产效率、降低成本、提升产品质量&#xff0c;并增强企业的核心竞争力。 数字化工厂的核心…

用友GRP-U8 SQL注入漏洞复现

0x01 产品简介 用友GRP-U8R10行政事业财务管理软件是用友公司专注于国家电子政务事业&#xff0c;基于云计算技术所推出的新一代产品&#xff0c;是我国行政事业财务领域最专业的政府财务管理软件。 0x02 漏洞概述 用友GRP-U8的bx_historyDataCheck jsp、slbmbygr.jsp等接口存…

链上房产赛道项目 ESTATEX 研报:以 RWA 的方式释放房产市场的潜力

在上个世纪初&#xff0c;随着全球人口的指数型增长以及城市化趋势加速&#xff0c;全球房地产行业逐渐进入到发展的爆发期与红利期。一方面人口的暴增与城市化进程的的加速&#xff0c;让住宅和商业房地产逐渐形成了刚需&#xff0c;另一方面全球经济飞速发展&#xff0c;让越…

Leetcode.4 寻找两个正序数组的中位数

题目链接 Leetcode.4 寻找两个正序数组的中位数 hard 题目描述 给定两个大小分别为 m m m 和 n n n 的正序&#xff08;从小到大&#xff09;数组 n u m s 1 nums1 nums1 和 n u m s 2 nums2 nums2。请你找出并返回这两个正序数组的 中位数 。 算法的时间复杂度应该为 O…

Pinia学习-存储数据、修改数据以及持久化实现

Pinia是什么&#xff1f; Pinia 是 Vue 的存储库&#xff0c;实现全局变量的定义 这里定义的变量信息&#xff0c;任何页面都可以使用&#xff0c;代替原来的VueX 官网&#xff1a;https://pinia.web3doc.top/ 4.2 Pinia存储数据 4.2.1获取存储数据 实现步骤&#xff1a;…

比例夹管阀及其高精度压力和流量控制解决方案

摘要&#xff1a;针对卫生和无菌流体系统中柔性管路内的压力和流量控制&#xff0c;本文介绍了采用电控夹管阀的高精度控制解决方案。解决方案基于反馈控制原理&#xff0c;采用压力传感器或流量传感器进行测量并反馈给程序控制器&#xff0c;控制器驱动夹管阀来改变柔性管路的…

双目视觉实战--单视图测量方法

目录 一.简介 二、2D变换 1. 等距变换&#xff08;欧式变换&#xff09; 2. 相似变换 3. 仿射变换 4. 射影变换&#xff08;透视变换&#xff09; 5. 结论 三、影消点与影消线 1. 平面上的线 2. 直线的交点 3. 2D无穷远点 4. 无穷远直线 5. 无穷远点的透视变换与仿…

Yakit单兵作战神器简单使用

文章目录 免配置抓包破解编码数据包DNSLog 官网下载地址&#xff1a;https://yaklang.com/ 使用文档&#xff1a;https://www.yaklang.com/products/intro 免配置抓包 会启动一个和BurpSuite一样的内置浏览器 访问地址&#xff0c;就会拦截到数据包 也可以在history里查看 破解…

屏幕录制视频编辑软件 Camtasia 2023 mac中文版软件功能

Camtasia 2023 mac是一款功能强大的屏幕录制和视频编辑软件&#xff0c;可以用于制作教育课程、演示文稿、培训视频等。它具有一系列工具和功能&#xff0c;包括屏幕录制、视频编辑、音频编辑、字幕、特效等&#xff0c;使用户可以轻松地创建高质量的视频内容。 Camtasia2023的…

DH48WK 温控器参数设置

北京东昊力伟科技有限责任公司 温控仪、温度控制器 产品特点&#xff1a; 可外接温度传感器Pt100、Cu50、K、E、J、N、T、R、S、B兼容输入&#xff1b;PID控制输出、位式控制输出、继电器报警输出&#xff1b;控温能满足设定温度值的0.2℃&#xff1b;既可用于加热控制、也可…

VR数字政务为我们带来了哪些便捷之处?

每每在政务大厅排队的时候&#xff0c;总是在想未来政务服务会变成什么样子呢&#xff1f;会不会变得更加便捷呢&#xff1f;今天我们就来看看VR数字政务&#xff0c;能够为我们带来哪些便捷之处吧&#xff01; 传统的政务服务中&#xff0c;不仅办事流程复杂&#xff0c;而且每…

5.2 加载矢量图层(delimitedtext,spatialite,wfs,memory)

文章目录 前言加载矢量(vector)图层delimitedtextQGis导入CSV代码导入 SpatiaLite data provider (spatialite)QgsDataSourceUriQGis导入spatialite代码导入 Web服务WFS (web feature service) data provider (wfs)QGis添加图层代码添加 Memory data providerType (memory)QGis…

腾讯云服务器带宽下载速度快吗?多线BGP和CN2高速网络

腾讯云服务器公网带宽下载速度计算&#xff0c;1M公网带宽下载速度是128KB/秒&#xff0c;5M带宽下载速度是512KB/s&#xff0c;腾讯云10M带宽下载速度是1.25M/秒&#xff0c;腾讯云百科txybk.com来详细说下腾讯云服务器不同公网带宽实际下载速度以及对应的上传速度对照表&…

dig 简明教程

哈喽大家好&#xff0c;我是咸鱼 不知道大家在日常学习或者工作当中用 dig 命令多不多 dig 是 Domain Information Groper 的缩写&#xff0c;对于网络管理员和在域名系统(DNS)领域工作的小伙伴来说&#xff0c;它是一个非常常见且有用的工具。 无论是简单的 DNS 解析查找还…

第三章 数据结构与算法——栈和

栈和队列被称为插入和删除受限制的线性表。 &#x1f341;一、栈的基本概念 &#x1f315;&#xff08;一&#xff09;栈的概念&#xff1a; ①&#xff1a;栈是一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈…

四川竹哲电子商务有限公司让抖音带货更轻松

随着电子商务的飞速发展&#xff0c;带货直播成为了新的行业热点。四川竹哲电子商务有限公司&#xff0c;一家在电子商务领域有着深厚实力和丰富经验的企业&#xff0c;正以其独特的视角和策略&#xff0c;引领着抖音带货的发展趋势&#xff0c;让这个新型商业模式更加轻松、高…

C++初阶(三)

文章目录 一、auto关键字(C11)1、auto简介2、auto使用规则1、 auto与指针和引用结合起来使用2、 在同一行定义多个变量 3、auto不能推导的场景1、 auto不能作为函数的参数2、 auto不能直接用来声明数组3、特性总结 二、基于范围的for循环(C11)1、范围for的语法2、 范围for的使用…

基于springboot校园二手书交易管理系统

功能如下图所示 摘要 校园二手书交易管理系统是一款基于Spring Boot框架的应用程序&#xff0c;旨在便捷管理大学校园内的二手书籍交易。该系统致力于为学生和教职工提供一个高效、便捷的平台&#xff0c;以便买卖二手书籍&#xff0c;从而减轻经济压力&#xff0c;减少资源浪费…