乐筑天下

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

[编程交流] 扩展数据-电气导管、电缆和

[复制链接]

4

主题

27

帖子

23

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 17:19:24 | 显示全部楼层 |阅读模式
大家好,
 
经过几个月的胡闹(拉扯我的头发),我终于发布了我的问题,因为我被这个问题难住了。我的lisp技能是一个正在进行的工作,是一个产品或多年来扫描论坛页面。
 
我是一名电气设计师,主要从事地下高压和低压网络的设计。我正在尝试使用lisp简化我起草设计的方式,lisp能够导出数据以填充计划等。
 
标准设计包括(A)电气支柱(具有支柱类型属性和可见性状态的动态块),(B)支柱之间的导管路径(多段线),©沟槽细节块(确定导管布置的可见性状态)和(D)电缆块(确定电缆类型的可见性状态)。
 

                               
登录/注册后可看大图

 
这是我脑海中一直在想象的Lisp程序的分解:
 
[列表]
  • 选择起始支柱/设备(A)-Lisp以记录支柱桩号属性和可见性状态。
  • 选择端柱/设备(A)-同上。
  • 选择上述支柱之间的沟槽路线(B)-拾取导管多段线。
  • 选择trench detail©-Lisp以记录trench details当前的可见性状态。
  • 选择cable-Lisp以记录选定电缆的可见性状态。
    [/列表]
    从我所做的所有阅读中,我认为最好的方法是使用扩展数据将所有收集的信息写入导管/多段线。实际上,导管多段线扩展数据将具有起点/终点支柱桩号、导管布置和电缆细节。在将扩展数据写入每个导管/多段线后,我希望能够将所有数据以及每个多段线的长度导出到电子表格中。
     
     
    下面的链接可能是我找到的最接近我需要的链接,它给了我一些导出问题,我不太确定数据是如何编写的。
    http://www.cadtutor.net/forum/showthread.php?31153-将数据添加到多段线并将此数据提取到表中
     
     
     
    我附上了一个包含我使用的标准块的文件。
     
    如果有人能帮助我,我将不胜感激,因为你会把我从许多白发中拯救出来!
     
    非常感谢!
     
    AJ公司
    181930t3ttausqttdi64tu.jpg
    样品图纸
  • 回复

    使用道具 举报

    106

    主题

    1万

    帖子

    101

    银币

    顶梁支柱

    Rank: 50Rank: 50

    铜币
    1299
    发表于 2022-7-5 17:53:13 | 显示全部楼层
    如果你在第一篇文章中看到asmi代码,它几乎就是你想要的,你需要一次只做一步,而不是只做一个大程序,然后就完全迷失了方向。
     
    选择块并获取属性详细信息
    选择块并获取属性详细信息
    根据asmi选择pline
    选择block get att settings(块获取att设置)查看下面的转储显示有多少变量连接到一个atribute
     
    1. ;This may be helpfull to add to asmi code
    2. (setq len (vla-get-length plobj)) ; length of pline
    3. (setq stbl (vlax-ename->vla-object (car (entsel "\nSelect 'Begin' block > "))))
    4. (setq atts1 '())
    5. (foreach att (vlax-invoke stbl 'getattributes)
    6. (setq atts1 (cons (vla-get-textstring att) atts1)) ; make a list of attributes textstring is value of attribute
    7. )

     
    1. ; note visibility and visible
    2. (foreach att (vlax-invoke stbl 'getattributes)  (vlax-Dump-Object att) )
    3. ; IAcadAttributeReference: AutoCAD Attribute Reference Interface
    4. ; Property values:
    5. ;   Alignment = 10
    6. ;   Application (RO) = #<VLA-OBJECT IAcadApplication 00007ff61bf53318>
    7. ;   Backward = 0
    8. ;   Constant (RO) = 0
    9. ;   Document (RO) = #<VLA-OBJECT IAcadDocument 00000000303ae0c8>
    10. ;   EntityTransparency = "ByLayer"
    11. ;   FieldLength = 0
    12. ;   Handle (RO) = "1FE"
    13. ;   HasExtensionDictionary (RO) = 0
    14. ;   Height = 2.0
    15. ;   Hyperlinks (RO) = #<VLA-OBJECT IAcadHyperlinks 0000000038659948>
    16. ;   InsertionPoint = (275.914 179.372 -999.0)
    17. ;   Invisible = 0
    18. ;   Layer = "0 PE Stations"
    19. ;   Linetype = "ByLayer"
    20. ;   LinetypeScale = 1.0
    21. ;   Lineweight = -1
    22. ;   LockPosition (RO) = -1
    23. ;   Material = "ByLayer"
    24. ;   MTextAttribute = 0
    25. ;   MTextAttributeContent = ""
    26. ;   MTextBoundaryWidth = 0.0
    27. ;   MTextDrawingDirection = 5
    28. ;   Normal = (0.0 0.0 1.0)
    29. ;   ObjectID (RO) = 49
    30. ;   ObjectID32 (RO) = 49
    31. ;   ObjectName (RO) = "AcDbAttribute"
    32. ;   ObliqueAngle = 0.0
    33. ;   OwnerID (RO) = 46
    34. ;   OwnerID32 (RO) = 46
    35. ;   PlotStyleName = "Color_7"
    36. ;   Rotation = 0.0
    37. ;   ScaleFactor = 1.0
    38. ;   StyleName = "Standard"
    39. ;   TagString = "STN"
    40. ;   TextAlignmentPoint = (277.248 180.372 -999.0)
    41. ;   TextGenerationFlag = 0
    42. ;   TextString = "S1"
    43. ;   Thickness = 0.0
    44. ;   TrueColor = #<VLA-OBJECT IAcadAcCmColor 00000000386594c0>
    45. ;   UpsideDown = 0
    46. ;   Visible = -1
    回复

    使用道具 举报

    4

    主题

    27

    帖子

    23

    银币

    初来乍到

    Rank: 1

    铜币
    20
    发表于 2022-7-5 18:11:35 | 显示全部楼层
    非常感谢您抽出时间回复Al。这是我迈向目标的下一块垫脚石,我会在有时间的时候看看能拼凑出什么,然后发回更新(更多问题)。干杯
    回复

    使用道具 举报

    4

    主题

    27

    帖子

    23

    银币

    初来乍到

    Rank: 1

    铜币
    20
    发表于 2022-7-5 18:37:26 | 显示全部楼层
    我已经缩减了所有内容,并尽可能地简化它,现在我正在使用警报框来显示我的结果(稍后将添加导出功能)。
     
    折线长度给了我一些问题,我无法将其添加到列表中,然后显示在警报框中。下一个问题是获取属性设置,我尝试合并BIGAL的建议,但一直得到“AutoCAD变量设置被拒绝:”OSMODE“nil”。现在,我已经将其设置为返回每个项目的句柄,我想让它显示开始和结束块属性“STN”和沟槽细节可见性状态(或将可见性状态作为字段的属性,这是最简单的)
     
    如有任何意见,我们将不胜感激。
     
    干杯
     
    1. (defun c:TESTW(/ plObj stBl enBl tren len datLst)
    2. (vl-load-com)
    3. (if
    4.    (and
    5.        (setq plObj(vlax-ename->vla-object (car (entsel "\nSelect trench to write > "))))
    6.        (setq stBl(entsel "\nSelect 'start' block > "))
    7.        (setq enBl(entsel "\nSelect 'end' block > "))
    8.        (setq tren(entsel "\nSelect trench detail > "))
    9.    ); end and
    10.    (progn
    11.      (setq
    12.      len (vla-get-length plObj)
    13.      stBl(cdr(assoc 5(entget(car stBl))))
    14.      enBl(cdr(assoc 5(entget(car enBl))))
    15.      tren(cdr(assoc 5(entget(car tren))))
    16.      datLst(list(cons 1 stBl)(cons 2 enBl)(cons 3 tren)
    17.      ;(cons 4 len)
    18.      )
    19.      ); end setq
    20.    (vlax-ldata-put plObj "Trench Data" datLst)
    21.    ); end progn
    22.   );end if
    23. (princ)
    24. ); c:TESTW
    25. (defun c:TESTR(/ rObj datLst)
    26. (vl-load-com)
    27. (if(and
    28.       (setq rObj(entsel "\nSelect trench to read > "))
    29.       (setq datLst(vlax-ldata-get(car rObj) "Trench Data"))
    30.       ); and
    31.    (alert(strcat "Start block: "(cdr(assoc 1 datLst))
    32.                  "\n\nEnd block: "(cdr(assoc 2 datLst))
    33.                  "\n\nTrench detail: "(cdr(assoc 3 datLst))
    34.                  "\n\nLength: can't get length here?" ))
    35.    (alert "\nNo data found. ")
    36.    ); end if
    37. (princ)
    38. ); end of c:TESTR
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-13 08:31 , Processed in 0.769977 second(s), 63 queries .

    © 2020-2025 乐筑天下

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