乐筑天下

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

Autocad MEP-VBScript-获取对象的法线

[复制链接]

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2013-3-7 18:08:56 | 显示全部楼层 |阅读模式
我正在Autocad MEP中工作,我正在尝试通过使用属性集和vbscript来获取对象的法线。 我不确定这是否可能。 我在欧特克网站上找到了这篇文章。
http://usa.autodesk.com/adsk/servlet/ps/dl/item?siteID=123112&id=6057466&linkID=9240657 描述如何添加不是对象的自动属性的属性,并显示了此 vbscript 代码。
  1. RESULT="--"
  2. On Error Resume Next
  3. Set AcadApp = GetObject(, "AutoCAD.Application")
  4. Set Obj = AcadApp.Activedocument.Objectidtoobject("xxxxx")
  5. RESULT= Obj.area

我将 Obj.area 修改为 obj.normal,但属性集仅显示--. 我知道代码有效,因为我将obj.normal更改为obj.rotation,并且它给出了拟合的旋转。
有没有人知道如何在Autocad MEP或Autocad Architecture中设置的属性中获取对象的正常? 我需要它,这样我才能看到管道配件是否围绕其中心线旋转。 旋转参数仅返回 XY 平面中的旋转。 我需要在 XZ 平面或 ZY 平面中旋转,这可以通过管接头的法线确定。
我确实使用VBA检查了AecbDuctFitting的属性,Normal是其中一个可用的。
感谢您的任何帮助。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2013-3-7 19:20:06 | 显示全部楼层
我真的认为这样的东西应该有效,但它只是返回RESULT的默认字符串,这意味着obj.normal在某个地方抛出错误。
  1. RESULT="Fitting Orientation Correct"
  2. On Error Resume Next
  3. Set AcadApp = GetObject(, "AutoCAD.Application")
  4. Set Obj = AcadApp.Activedocument.Objectidtoobject("[ObjectID]")
  5. Normal = obj.normal
  6. If Normal(2) = -1 Then
  7.    RESULT = "UpsideDown Fitting"
  8. End If

回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2013-3-9 03:29:25 | 显示全部楼层
看看这个话题,也许它会有所帮助
http://forums.autodesk.com/t5/AutoCAD-Architecture/Can-this-be-done-with-VBScript/td-p/3058092
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2013-3-9 10:58:32 | 显示全部楼层
非常感谢菲索!我能够从帖子中提供的例子中得到我想要的东西。下面是工作代码,允许我获取属性集中对象的法线
出现错误,请继续下一步
设置acadApp=GetObject(,即“AutoCAD.Application”)
<div>的音频值:</div>
'ACA 2010=“18.0s(LMS技术)”
'ACA 2011=“18.1s(LMS技术)”
'ACA 2012=“18.2s(LMS技术)”
'ACA 2013=“19.0s(LMS技术)”
'ACA 2014=“19.1s(LMS技术)”
acadVerString=acadApp.ActiveDocument.GetVariable(“ACADVER”)
根据运行的版本设置ACA应用程序字符串:
选择案例acadVerString
案例“18.0s(LMS技术)”'ACA-2010
aecBaseVer=“AecX.AecBaseApplication.6.0”
案例“18.1s(LMS技术)”'ACA-2011
aecBaseVer=“AecX.AecBaseApplication.6.5”
案例“18.2s(LMS技术)”'ACA-2012
aecBaseVer=“AecX.AecBaseApplication.6.7”
案例“19.0年代(LMS技术)”'ACA-2013
aecBaseVer=“AecX.AecBaseApplication.7.0”
案例“19.1s(LMS技术)”'ACA-2014
aecBaseVer=“AecX.AecBaseApplication.7.5”
在其他情况下
aecBaseVer=“未知”
结束选择
如果aecBaseVer=“未知”,则
RESULT=“未知版本”
其他
<div>‘获取实用程序对象以将Vector3D转换为数组。</div>
设置aecBase=acadApp.GetInterfaceObject(aecBaseVer)
aecBase。初始化acadApp
设置DuctFittingObject=acadApp.ActiveDocument.ObjectdToObject([ObjectID])
设置UtilityObject=aecBase.ActiveDocument.Utility
“获取对象的法线并分解为单独的X、Y和Z部分。
DuctFittingObjectNormal=UtilityObject.ConvertToVariantArray(ductfittengobject.Normal)
NormalX=管道配件对象normal(0)
NormalY=管道安装对象normal(1)
NormalZ=管道安装对象normal(2)
返回结果
RESULT=CStr(NormalX&“:”&NormalY&“:”和NormalZ)
如果
通过在属性集中获取此信息,我可以开发一个显示主题,该主题将通过Autocad Architecture和Autocad MEP提供的用户界面突出显示所有倒置的配件。再次感谢
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2013-3-10 01:45:33 | 显示全部楼层
很高兴你成功了。
干杯
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-6-29 17:25 , Processed in 1.525752 second(s), 63 queries .

© 2020-2025 乐筑天下

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