乐筑天下

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

[编程交流] 阿斯米。工具XTOBE/X管道:需求

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:45:31 | 显示全部楼层 |阅读模式
嗨,这里是一个新手。
 
我下载并使用了ASMI的lisp例程,尤其是XPipe和XPipe。我注意到ASMI早在2010年1月就退出了这个论坛。
 
xtube。lsp基本上从直线/多段线和圆弧挤出三维圆形管道。我将例程附加在消息的末尾。
 
我只有一个非常基本的autolisp诀窍,那是十多年前的事了。现在我对vb和vlisp有些迷茫,发现很难自定义/编辑xtube。lsp
 
我希望能得到一些帮助,如何修改这篇文章。lsp执行以下操作
 
 
[列表]
  • 挤出三维矩形空心管(宽度w、深度h、厚度t),而不是圆形管
    我想例程的主要引擎是以下部分
    -------------------------------------------------------
    1. [font=Courier New](setq 3dPos(list XOrd YOrd ZOrd)[/font]
    2. [font=Courier New]             exCir(vla-addCircle actSp [/font]
    3. [font=Courier New]                     (vlax-3d-Point startPt) [/font]
    4. [font=Courier New]                       (/ tube:Width 2)) [/font]
    5. [font=Courier New]             inCir(vla-addCircle actSp [/font]
    6. [font=Courier New]                     (vlax-3d-Point startPt) [/font]
    7. [font=Courier New]                        (/ tube:Height 2)) [/font]
    8. [font=Courier New]             ); end setq [/font]

    -------------------------------------------------------
    我在vlisp中找不到替换-addCircle的术语(例如-addRectangle,所以例程绘制要拉伸的矩形,而不是绘制圆形)。
     
    非常感谢您的任何建议。
     
    干杯
     
     
     
     
     
    1. ;; ==================================================================== ;;
    2. ;;                                                                      ;;
    3. ;;  XTUBE.LSP - Fast 3D-pipe extrude.                                   ;;
    4. ;;                                                                      ;;
    5. ;; ==================================================================== ;;
    6. ;;                                                                      ;;
    7. ;;  Command(s) to call: XTUBE                                           ;;
    8. ;;                                                                      ;;
    9. ;;  Select Lines, Polylines or Arcs, specify external and               ;;
    10. ;;  internal pipe diameter and press Enter. The program will            ;;
    11. ;;  extrude pipes. You can erase path lines after it.                   ;;
    12. ;;                                                                      ;;
    13. ;; ==================================================================== ;;
    14. ;;                                                                      ;;
    15. ;;  THIS PROGRAM AND PARTS OF IT MAY REPRODUCED BY ANY METHOD ON ANY    ;;
    16. ;;  MEDIUM FOR ANY REASON. YOU CAN USE OR MODIFY THIS PROGRAM OR        ;;
    17. ;;  PARTS OF IT ABSOLUTELY FREE.                                        ;;
    18. ;;                                                                      ;;
    19. ;;  THIS PROGRAM PROVIDES 'AS IS' WITH ALL FAULTS AND SPECIFICALLY      ;;
    20. ;;  DISCLAIMS ANY IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS        ;;
    21. ;;  FOR A PARTICULAR USE.                                               ;;
    22. ;;                                                                      ;;
    23. ;; ==================================================================== ;;
    24. ;;                                                                      ;;
    25. ;;  V1.2, 17 June, 2005, Riga, Latvia                                   ;;
    26. ;;  © Aleksandr Smirnov (ASMI)                                          ;;
    27. ;;  For AutoCAD 2000 - 2008 (isn't tested in a next versions)           ;;
    28. ;;                                                                      ;;
    29. ;;                             [url]http://www.asmitools.com[/url]                 ;;
    30. ;;                                                                      ;;
    31. ;; ==================================================================== ;;
    32. (defun ctube(/ 3DPOS ACTDOC ACTLAY ACTSP BASELINE
    33.                 BASESET DICOUNT DIVDID EXCIR EXENT
    34.                 EXTUBE INCIR INENT INTUBE LAYST
    35.                 OBJTYPE OLDECHO oldWidth oldHeight
    36.                 STARTPT XORD YORD ZORD DELFLAG *ERROR*)
    37. (vl-load-com)
    38. (defun *error* (msg)
    39.    (vla-put-Lock actLay laySt)
    40.    (setvar "CMDECHO" oldEcho)
    41.    (vla-EndUndoMark actDoc)
    42.    (princ)
    43.    ); end of *error*
    44. (if(not tube:Width)(setq tube:Width 40.0))
    45. (if(not tube:Height)(setq tube:Height 37.0))
    46. (setq actDoc
    47.    (vla-get-ActiveDocument
    48.      (vlax-get-Acad-object))
    49.   actLay(vla-get-ActiveLayer actDoc)
    50.        oldWidth tube:Width
    51.   oldHeight tube:Height
    52.        oldEcho(getvar "CMDECHO")
    53.   ); end setq
    54. (vla-StartUndoMark actDoc)
    55. (setvar "CMDECHO" 0)
    56. (if(= 0(vla-get-ActiveSpace actDoc))
    57.    (setq actSp(vla-get-PaperSpace actDoc))
    58.    (setq actSp(vla-get-ModelSpace actDoc))
    59.    ); end if
    60. (setq laySt(vla-get-Lock actLay))
    61. (vla-put-Lock actLay :vlax-false)
    62. (setq tube:Width
    63.    (getreal
    64.      (strcat
    65.        "\nSpecify external diameter <"(rtos tube:Width)">: "))
    66.       tube:Height
    67.    (getreal
    68.      (strcat
    69.        "\nSpecify internal diameter <"(rtos tube:Height)">: "))
    70.   ); end setq
    71. (if(null tube:Height)(setq tube:Height oldHeight))
    72. (if(null tube:Width)(setq tube:Width oldWidth))
    73. (if(< tube:Height tube:Width)
    74.    (progn
    75. (princ "\n<<< Select objects to extrude and press Enter >>>")
    76. (if
    77.    (setq baseSet
    78.      (ssget '((-4 . "<OR")(0 . "*LINE")(0 . "CIRCLE")
    79.           (0 . "ARC")(0 . "ELLIPSE")(-4 . "OR>")
    80.           (-4 . "<NOT")(-4 . "<OR")(0 . "SPLINE")
    81.                (0 . "MLINE")(-4 . "OR>")(-4 . "NOT>"))))
    82.    (progn
    83.      (setq baseSet(vl-remove-if 'listp
    84.                              (mapcar
    85.            'cadr
    86.            (ssnamex baseSet))))
    87.      (foreach pathEnt baseSet
    88.      (setq baseLine
    89.        (vlax-ename->vla-object pathEnt)
    90.            objType(vla-get-ObjectName baseLine)
    91.            startPt(vlax-curve-getStartPoint baseLine)
    92.            3dPos
    93.        (vlax-curve-getFirstDeriv baseLine
    94.          (vlax-curve-getParamAtPoint baseLine startPt))
    95.           diCount(strlen
    96.            (itoa
    97.         (apply 'max
    98.          (mapcar 'abs
    99.           (mapcar 'fix startPt)))))
    100.           divDid "1"
    101.       ); end setq
    102.    (repeat diCount
    103.          (setq divDid(strcat divDid "0"))
    104.        ); end repeat
    105.         (setq divDid(atoi divDid))
    106.         (if(/= 0.0(car 3dPos))
    107.           (setq XOrd(/(car 3dPos)divDid))
    108.           (setq XOrd (car 3dPos))
    109.         ); end if
    110.         (if(/= 0.0(cadr 3dPos))
    111.           (setq YOrd(/(cadr 3dPos)divDid))
    112.           (setq YOrd (cadr 3dPos))
    113.         ); end if
    114.        (if(/= 0.0(nth 2 3dPos))
    115.           (setq ZOrd(/(nth 2 3dPos)divDid))
    116.           (setq ZOrd (nth 2 3dPos))
    117.         ); end if
    118.       (setq 3dPos(list XOrd YOrd ZOrd)
    119.             exCir(vla-addCircle actSp
    120.                     (vlax-3d-Point startPt)
    121.                       (/ tube:Width 2))
    122.             inCir(vla-addCircle actSp
    123.                     (vlax-3d-Point startPt)
    124.                        (/ tube:Height 2))
    125.             ); end setq
    126.      (vla-put-Normal exCir(vlax-3D-point 3dPos))
    127.      (vla-put-Normal inCir(vlax-3D-point 3dPos))
    128.      (setq exEnt(vlax-vla-object->ename exCir)
    129.            inEnt(vlax-vla-object->ename inCir)
    130.            ); end setq
    131. (command "_.extrude" exEnt "" "_p" pathEnt)
    132. (setq exTube(entlast))
    133. (command "_.extrude" inEnt "" "_p" pathEnt)
    134. (setq inTube(entlast))
    135. (command "_subtract" exTube "" inTube "")
    136. (command "_.erase" exEnt "")
    137. (command "_.erase" inEnt "")
    138.   ); end foreach
    139.   (initget "Yes No")
    140.      (setq delFlag
    141.          (getkword "\nDelete extrude path(s)? [Yes/No] <No>: "))
    142.      (if(null delFlag)(setq delFlag "No"))
    143.      (if(= "Yes" delFlag)
    144.    (foreach pathEnt baseSet
    145.           (vla-delete(vlax-ename->vla-object pathEnt))
    146.     ); end foreach
    147.       ); end if
    148.      (vla-put-Lock actLay laySt)
    149.      (setvar "CMDECHO" oldEcho)
    150.       ); end progn
    151.      ); end if
    152.     ); end progn
    153.    (princ "\nInternal diameter more or equal external diameter! ")
    154.    ); end if
    155. (vla-EndUndoMark actDoc)
    156.    (princ)
    157. ); end  of ctube
    158. (princ "\n[info] http:\\\\[url="http://www.AsmiTools.com"]www.AsmiTools.com[/url] [info]")
    159. (princ "\n[info] Type XPIPE for extrude 3D-pipes. [info]")
  • 回复

    使用道具 举报

    4

    主题

    2143

    帖子

    2197

    银币

    限制会员

    铜币
    -24
    发表于 2022-7-6 09:21:53 | 显示全部楼层
    你需要阅读代码发布指南。这次已经为您完成了,但以后请使用它们。
    回复

    使用道具 举报

    1

    主题

    2

    帖子

    1

    银币

    初来乍到

    Rank: 1

    铜币
    5
    发表于 2022-7-6 09:59:39 | 显示全部楼层
     
     
    哎呀,很抱歉。我不知道这条规则。
     
    干杯
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-7 08:05 , Processed in 0.357218 second(s), 58 queries .

    © 2020-2025 乐筑天下

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