乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 15|回复: 2

[编程交流] 为什么USC active不起作用

[复制链接]

10

主题

16

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 15:09:03 | 显示全部楼层 |阅读模式
我在使用USC时遇到了一个问题,例如,我试图更改de USC以定位一个新点,并使用该点和之前创建的其他点添加一条线,我向您展示了我为此编写的代码片段。
问题是,当我定义x0、y0和z0时,请注意,当我这样做时,它支持USC被更改(newUCS),因此x0、y0和z0由之前的USC定位。
向我的朋友致意
 
注:我知道m2,xm
 
 
 
如果此图纸。GetVariable(“UCSNAME”)=“”然后
使用此图纸
设置电流=。用户协调系统。添加(_
.GetVariable(“UCSORG”)_
.公用事业平移坐标(.GetVariable(“UCSXDIR”)、acUCS、acWorld、0)_
.公用事业平移坐标(.GetVariable(“UCSYDIR”)、acUCS、acWorld、0)_
“OriginalUCS”)
以结束
其他的
设置currUCS=此图形。ActiveUCS的当前UCS已保存
如果结束
如果m2
x3=xm-1:y3=m2+ym:z3=0
 
如果m2>0,则
x3=xm+1:y3=m2+ym:z3=0
 
如果结束
 
原点(0)=xm:原点(1)=ym:原点(2)=zm
xAxis(0)=x2:xAxis(1)=y2:xAxis(2)=z2
yAxis(0)=x3:yAxis(1)=y3:yAxis(2)=z3
 
设置newUCS=ThisDrawing。用户协调系统。添加(origin,xAxis,yAxis,“TestUCS”)
此图纸。ActiveUCS=新UCS的更改UCS
 
x0=0:y0=-距离(0):z0=0
 
起始点(0)=xm:起始点(1)=ym:起始点(2)=zm
端点(0)=x0:端点(1)=y0:端点(2)=z0
设置lineObj=ThisDrawing。模型空间。添加线(起点、终点)
 
此图纸。ActiveUCS=当前UCS重置为以前的UCS
 
末端接头
回复

使用道具 举报

10

主题

973

帖子

909

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-6 15:58:35 | 显示全部楼层
无论当前UCS如何,在VBA中构建对象的坐标始终解释为WCS。
 
考虑到这一点,可以将上面发布的例程修改为:
 
 
  1. . . . .
  2. Dim varUCSMatrix as Variant
  3. . . . .
  4. ‘may not need to store current UCS
  5. If m2 < 0 Then
  6. x3 = xm - 1: y3 = -m2 + ym: z3 = 0
  7. ElseIf m2 > 0 Then
  8. x3 = xm + 1: y3 = m2 + ym: z3 = 0
  9. End If
  10. origin(0) = xm: origin(1) = ym: origin(2) = zm
  11. xAxis(0) = x2: xAxis(1) = y2: xAxis(2) = z2
  12. yAxis(0) = x3: yAxis(1) = y3: yAxis(2) = z3
  13. Set newUCS = ThisDrawing.UserCoordinateSystems.Add(origin, xAxis, yAxis, "TestUCS")
  14. ‘no need to set newUCS current
  15. varUCSMatrix = newUCS.GetUCSMatrix
  16. x0 = 0: y0 = -Dist(0): z0 = 0
  17. startPoint(0) = xm: startPoint(1) = ym: startPoint(2) = zm
  18. endPoint(0) = x0: endPoint(1) = y0: endPoint(2) = z0
  19. Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
  20. lineObj.TransformBy varUCSMatrix
  21. ‘ThisDrawing.ActiveUCS = currUCS '(possibly not needed)
  22. End Sub
回复

使用道具 举报

10

主题

16

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
50
发表于 2022-7-6 16:10:53 | 显示全部楼层
谢谢
我认为改变USC并使其成为当前版本解决了这个问题
我不知道transformby方法。阅读帮助我看到,这适用于绘图中的任何对象,这是一个强大的工具。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 19:38 , Processed in 0.314942 second(s), 58 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表