lewis770227 发表于 2022-7-6 15:05:56

是否可能应用transformd m

我正在编写一段代码,创建一个blockreobject数组,在生成这个数组之后,我想用transform方法进行修改。
顺致敬意,

ReMark 发表于 2022-7-6 15:33:17

如果你能这么好。你说的转换方法是什么?

lewis770227 发表于 2022-7-6 15:48:51

看看这个代码:
子示例_ArrayRectangular()
 
'创建圆
Dim circleObj作为AcadCircle
将中心调暗(0到2)为双精度
将半径调整为双精度
 
将新UCS变暗为AcadUCS
暗电流作为AcadUCS
Dim varUCSMatrix作为变体
 
pb=本图纸。公用事业GetPoint(,“基点:”)
px=此图纸。公用事业GetPoint(,“xdirection:”)
py=此图纸。公用事业GetPoint(,“ydirection:”)
 
中心(0)=2#:中心(1)=2#:中心(2)=0#
半径=0.5
设置circleObj=ThisDrawing。模型空间。添加圆(中心、半径)
此图纸。应用动物园购物中心
 
'定义矩形阵列
Dim numberOfRows尽可能长
Dim numberOfColumns等长
Dim NumberofLevel尽可能长
Dim distanceBwtnRows为双精度
Dim DistanceBWTN列为双精度
Dim DistanceBwtnLevel为双精度
行数=5
numberOfColumns=5
numberOfLevels=1
距离BWTNROWS=1
距离BWTN列=1
距离BWTN级别=1
 
设置newUCS=ThisDrawing。用户协调系统。添加(pb、px、py,“测试UCS”)
varUCSMatrix=新UCS。GetUCSMatrix
 
'创建对象数组
Dim retObj作为变体
retObj=圆形。ArrayRectangle(numberOfRows,numberOfColumns,numberOfLevels,distanceBwtnRows,distanceBwtnColumns,distanceBwtnLevels)
retObj。TransformBy varUCSMatrix公司
 
动物园购物中心
 
末端接头
 
transformBy行中出现了一个错误,我不知道distanceBwtnLevels和numberOfLevels在数组定义中是如何工作的

ReMark 发表于 2022-7-6 16:00:57

对不起,我不熟悉TransformBy。
 
至于NumberOfLevels和DistanceBwtnLevels,你有没有可能使用3D阵列?

SEANT 发表于 2022-7-6 16:19:36

这个TransformedBy方法仅限于单个实体。你可能必须这样做:
 
Dim retObj() As AcadEntity
Dim varEnt As Variant
Dim ent As AcadEntity
retObj = circleObj.ArrayRectangular(numberOfRows, numberOfColumns, numberOfLevels, distanceBwtnRows, distanceBwtnColumns, distanceBwtnLevels)

For Each varEnt In retObj
Set ent = varEnt
ent.TransformBy varUCSMatrix
Next
circleObj.TransformBy varUCSMatrix
 
你也可以找到这幅画。用户协调系统。Add对输入坐标非常挑剔。可能需要额外的步骤来确保两个向量垂直。
页: [1]
查看完整版本: 是否可能应用transformd m