当前位置: 首页 > news >正文

Solidworks二次开发:样条曲线、平移、旋转和扫描切除

绘制样条曲线:生成若干数据点,然后根据这些点绘制样条曲线,点数过多会卡顿甚至失败。绘制样条曲线的API是CreateSpline2,其含有两个参数,第一个参数是数据点数组,按XYZ的顺序依次存储,第二个参数是布尔值,True 表示模拟自然结束,False 表示不模拟自然结束。

import win32com.client as win32
import math as mh
import numpy as np
import pythoncom
def vtFloat(list):return win32.VARIANT(pythoncom.VT_ARRAY|pythoncom.VT_R8,list)
swApp = win32.Dispatch('sldworks.application')
swApp.Visible = True
Nothing = win32.VARIANT(pythoncom.VT_DISPATCH, None)
Part = swApp.NewDocument(r"C:\ProgramData\SolidWorks\SOLIDWORKS 2018\templates\\gb_part.prtdot", 0, 0, 0)
swPart = Part
Z=np.linspace(0,10,num=100)
points=[]
for z in Z:points.append(mh.cos(z)/1000)points.append(mh.sin(z)/1000)points.append(z/1000)
pointArray=vtFloat(points)
​
Part.SketchManager.Insert3DSketch(True)
skSegment = Part.SketchManager.CreateSpline2(pointArray,1)
Part.ClearSelection2(True)
​
boolstatus = Part.Extension.SelectByID2("3D草图1", "SKETCH", 0, 0, 0, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Spline2", "SKETCHSEGMENT", 1.85887074501475E-03, -3.36033643974305E-03, 5.78262344421818E-03, False, 0, Nothing, 0)
​
boolstatus = Part.Extension.SelectByID2("Line2", "SKETCHSEGMENT", -1.73623208333802E-03, -2.31258153645074E-03, 7.81040559785985E-03, False, 0, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("Line2@3D草图3", "EXTSKETCHSEGMENT", -3.75807692597618E-03, 3.45141777074787E-03, 0, False, 0, Nothing, 0)

平移和旋转:对实体进行平移和旋转,所用的API是InsertMoveCopyBody2,其一共有12个参数,依次如下

TransX:X轴平移的增量值;应用于平移

TransY:Y轴平移的增量值;应用于平移

TransZ:Z轴平移的增量值;应用于平移

TransDist:平移距离;应用于平移

RotPointX:旋转原点的X值;应用于旋转

RotPointY:旋转原点的Y值;应用于旋转

RotPointZ:旋转原点的Z值;应用于旋转

RotAngleX:X轴旋转角度的值;应用于旋转

RotAngleY:Y轴旋转角度的值;应用于旋转

RotAngleZ:Z轴旋转角度的值;应用于旋转

BCopy:如果是复制操作为True,如果是移动操作为False

NumCopies:要创建的副本数量

Dim swApp As Object
​
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
​
Sub main()
​
Set swApp = Application.SldWorks
​
Set Part = swApp.ActiveDoc
​
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("实体-移动/复制1", "SOLIDBODY", 2.43934486115904E-03, 6.95337162198939E-04, 2.03449449003301E-05, False, 1, Nothing, 0)
Dim myFeature As Object
Set myFeature = Part.FeatureManager.InsertMoveCopyBody2(0, 0, 0, 0, 2.23119165229542E-03, -1.12361570448815E-04, -7.97491319686074E-05, 0, 0, 0.872664625997167, False, 1)
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("实体-移动/复制2", "SOLIDBODY", 2.8606295433562E-03, 3.44573247673452E-04, 5.34573056256704E-05, False, 1, Nothing, 0)
Set myFeature = Part.FeatureManager.InsertMoveCopyBody2(0, 0, 0.01, 0, 0.00223119165, -2.210592905042E-04, -8.52224055764143E-05, 0, 0, 0, False, 1)
End Sub

变换前

变换后

扫描切除-实体轮廓:用一个工具实体按特定轮廓切除另一个实体,所用的API是InsertCutSwept4,

Propagate:True 表示将扫掠切割传播到下一个边缘,False 表示仅在选定的边缘上进行扫掠切割;要传播到下一个边缘,下一个边缘必须与当前边缘相切

Alignment:如果用于扫掠的曲线从一个面到另一个面或从一个边缘到另一个边缘,True 会导致扫掠完全穿过切割的端面,而 False 会导致切割从扫掠曲线开始和结束时垂直;因此,它可能不会穿透被切割体的两个端面T

wistCtrlOption:如 swTwistControlType_e 中定义的扭转控制选项

KeepTangency:如果扫掠截面有切线段,True 会导致生成的扫掠中的相应表面保持切线,False 则不会

BAdvancedSmoothing:如果扫掠截面有圆形或椭圆形弧线,True 近似截面并平滑表面,False 则不会

StartMatchingType:如 swTangencyType_e 中定义的切线类型

EndMatchingType:如 swTangencyType_e 中定义的切线类型

IsThinBody:如果这个特征是薄体,则为 True,如果不是则为 False

Thickness1:第一个方向的厚度值

Thickness2:第二个方向的厚度值T

hinType:如 swThinWallType_e 中定义的薄壁类型

PathAlign:路径对齐类型

UseFeatScope:如果该特征仅影响选定的实体,则为 True,如果该特征影响所有实体,则为 False

UseAutoSelect:True 表示自动选择所有实体并使特征影响这些实体,False 表示选择特征影响的实体

TwistAngle:如果 TwistCtrlOption 设置为 swTwistControlType_e.swTwistControlConstantTwistAlongPath,则指定末端扭转角度BMergeSmoothFaces:True 表示合并平滑面,False 表示不合并

AssemblyFeatureScope:如果扫掠切割仅影响装配中的选定组件,则为 True,如果扫掠切割影响装配中的所有组件,则为 False

AutoSelectComponents:True 表示自动选择装配中所有受影响的组件,False 表示使用手动选定的组件

PropagateFeatureToParts:True 表示将扫掠切割特征扩展到装配中所有受影响的零件,False 表示仅将扫掠切割插入到装配中

Dim swApp As Object
​
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
​
Sub main()
​
Set swApp = Application.SldWorks
​
Set Part = swApp.ActiveDoc
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID2("实体-移动/复制1", "SOLIDBODY", 2.27325767582442E-03, 6.46697756508274E-04, -4.8367987403708E-05, False, 1, Nothing, 0)
boolstatus = Part.Extension.SelectByID2("螺旋线/涡状线1", "REFERENCECURVES", 0, 0, 0, True, 4, Nothing, 0)
Dim myFeature As Object
Set myFeature = Part.FeatureManager.InsertCutSwept4(False, True, 0, False, False, 0, 0, False, 0, 0, 0, 10, True, True, 0, True, True, True, False)
End Sub

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 自定义@ResponseBody以及SpringMVC总结
  • 唯有自救,才能得救
  • uniapp(微信小程序如何使用单选框、复选框)
  • PyTorch升级之旅——安装与基本知识
  • 基于Springboot和BS架构的宠物健康咨询系统pf
  • 【Material-UI】Radio Group中的 Label Placement 属性详解
  • 嵌入式企业面试真题
  • 【学习笔记】时间序列模型(ARIMA)
  • Java | Leetcode Java题解之第357题统计各位数字都不同的数字个数
  • 前端实现投影坐标和地理坐标系(CGCS2000)转换
  • PostgreSQL 不完全兼容 Oracle 的 SQL 语法,如何模拟功能?
  • 深入理解 Vue 2 的双向绑定原理与实现
  • 【设计模式】单例模式和生产者消费者模型
  • 使用Jupyter Notebook实现Python编程
  • mysql 悲观锁使用
  • 2019.2.20 c++ 知识梳理
  • css的样式优先级
  • es的写入过程
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • springMvc学习笔记(2)
  • WePY 在小程序性能调优上做出的探究
  • windows下mongoDB的环境配置
  • - 概述 - 《设计模式(极简c++版)》
  • 基于Android乐音识别(2)
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 基于游标的分页接口实现
  • 浅析微信支付:申请退款、退款回调接口、查询退款
  • 容器服务kubernetes弹性伸缩高级用法
  • 手机端车牌号码键盘的vue组件
  • 小程序开发之路(一)
  • 小而合理的前端理论:rscss和rsjs
  • 终端用户监控:真实用户监控还是模拟监控?
  • 阿里云API、SDK和CLI应用实践方案
  • 阿里云服务器如何修改远程端口?
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #QT(TCP网络编程-服务端)
  • (2)(2.10) LTM telemetry
  • (CPU/GPU)粒子继承贴图颜色发射
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (编译到47%失败)to be deleted
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (四)React组件、useState、组件样式
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)Scala的“=”符号简介
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • ./mysql.server: 没有那个文件或目录_Linux下安装MySQL出现“ls: /var/lib/mysql/*.pid: 没有那个文件或目录”...
  • .net core Swagger 过滤部分Api
  • .Net Core和.Net Standard直观理解
  • .NET 药厂业务系统 CPU爆高分析
  • .NET开源、简单、实用的数据库文档生成工具