明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 931|回复: 7

[提问] 求助:平面管道弯头生成工具。希望高手帮忙修改一下

[复制链接]
发表于 2022-5-31 11:27 | 显示全部楼层 |阅读模式
5明经币
本帖最后由 huxu823 于 2022-5-31 13:17 编辑

命令:GD(用于单线管道变双线管道,也可以生成2条管道交汇处的平面双线弯头)
命令:WT(用于生成两条管道一高一低的平面俯视弯头)


现存在以下2个BUG
1、使用本LISP程序后会修改当前图层为“管道”图层,如何才能在使本程序后恢复到原设置的当前图层呢?
2、想要使用WT命令生成俯视弯头,必须先使用一次GD命令,否则直接使用WT命令会提示:参数类型错误: numberp: nil

这个求助以前发过,没能得到解决,还望高手帮忙看一下,修复以上2个BUG,不胜感激!!!

如果方便的话,能把LSP和DCL合并成一个LSP程序就更好了,研究了怎么把DLC转换成LSP,可是还是不知道怎么把转换后的DCL加到原程序中




  1. ;;;;管道中心线----------------------------------------------------
  2. (DEFUN LINECO (SS / SCALE1 INDEX1)
  3.   (setq INDEX1 0)
  4.   (SETVAR "cmdecho" 0)
  5.   (setq SCALE1 (/ 100 (GETVAR "LTSCALE")))
  6.   (REPEAT (SSLENGTH SS)
  7.     (command "chprop" (SSNAME SS INDEX1) "" "layer" "Center" "c" "8" "LT" "CENTER" "LW" "0.15" "S" SCALE1 "")      ;;;;设置管道中心线图层名为Center、颜色为灰色、线型为CENTER、宽为0.15、线型比例为前面设置的当前图层线型比例的100倍
  8.     (setq INDEX1 (1+ INDEX1))
  9.   )
  10.   (SETVAR "cmdecho" 1)
  11. )


  12. ;;;;绘制平面弯头的大弯轮廓线----------------------------------------------------
  13. (DEFUN ARCSX (ENAME DIST / BIGARC ENTDATA ENTDATA1 NEWLAYER RNEW RNEWLIST
  14.         ROLDLIST SMALLARC SCALE1
  15.        )
  16.   (SETVAR "cmdecho" 0)
  17.   (setq ENTDATA (ENTGET ENAME))
  18.   (setq ROLDLIST (ASSOC 40 ENTDATA))
  19.   (setq RNEW (CDR ROLDLIST))
  20.   (setq RNEW (+ RNEW (* DIST 0.5)))
  21.   (setq RNEWLIST (CONS 40 RNEW))
  22.   (setq NEWLAYER (CONS 8 (GETVAR "clayer")))    ;;;;平面弯头大轮廓线使用的图层
  23.   (setq ENTDATA1 (SUBST
  24.        RNEWLIST
  25.        ROLDLIST
  26.        ENTDATA
  27.      )
  28.   )
  29.   (setq ENTDATA1 (SUBST
  30.        NEWLAYER
  31.        (ASSOC 8 ENTDATA1)
  32.        ENTDATA1
  33.      )
  34.   )
  35.   
  36.   ;;;;设置平面弯头的大弯轮廓线
  37.   (ENTMAKE ENTDATA1)
  38.   (command "_pedit" (ENTLAST) "W" K "")
  39.   (command "chprop" (ENTLAST) "" "c" COL "")

  40.   ;;;;绘制平面弯头的小弯轮廓线
  41.   (setq BIGARC (vlax-ename->vla-object (ENTLAST)))
  42.   (setq RNEW (- RNEW DIST))
  43.   (setq RNEWLIST (CONS 40 RNEW))
  44.   (setq NEWLAYER (CONS 8 (GETVAR "clayer")))    ;;;;平面弯头小轮廓线使用的图层
  45.   (setq ENTDATA1 (SUBST
  46.        RNEWLIST
  47.        ROLDLIST
  48.        ENTDATA
  49.      )
  50.   )
  51.   (setq ENTDATA1 (SUBST
  52.        NEWLAYER
  53.        (ASSOC 8 ENTDATA1)
  54.        ENTDATA1
  55.      )
  56.   )
  57.   
  58.   ;;;;设置平面弯头的小弯轮廓线
  59.   (ENTMAKE ENTDATA1)
  60.   (command "_pedit" (ENTLAST) "W" K "")
  61.   (command "chprop" (ENTLAST) "" "c" COL "")
  62.   
  63.   ;;;;设置平面弯头已倒角中心线
  64.   (setq SCALE1 (/ 100 (GETVAR "LTSCALE")))
  65.   (command "chprop" ENAME "" "layer" "Center" "c" "8" "LT" "CENTER" "LW" "0.15" "S" SCALE1 "")
  66.   (SETVAR "cmdecho" 0)
  67.   (setq SMALLARC (vlax-ename->vla-object (ENTLAST)))
  68.   (LIST SMALLARC BIGARC)
  69. )


  70. ;;;;绘制管道轮廓线和端线----------------------------------------------------
  71. (DEFUN LINESX (ENAME DIST / ANG ENTDATA PT1 PT2 SXPT1 SXPT2 SXPT3 SXPT4 XK)
  72.   (setq XK (* DIST 0.5))
  73.   (setq ENTDATA (ENTGET ENAME))
  74.   (setq PT1 (CDR (ASSOC 10 ENTDATA)))
  75.   (setq PT2 (CDR (ASSOC 11 ENTDATA)))
  76.   (setq ANG (+ (ANGLE PT1 PT2) (* 0.5 PI)))
  77.   (setq SXPT1 (POLAR PT1 ANG XK))
  78.   (setq SXPT2 (POLAR PT2 ANG XK))
  79.   (setq ENTDATA1 (ASSOC 0 ENTDATA))
  80.   (SETVAR "cmdecho" 0)
  81.   
  82.   ;;;;绘制管道第一条轮廓线
  83.   (command "pline" SXPT1 "width" K K SXPT2 "")
  84.   (command "chprop" (ENTLAST) "" "c" COL "")
  85.   (setq ANG (+ PI ANG))
  86.   (setq SXPT3 (POLAR PT1 ANG XK))
  87.   (setq SXPT4 (POLAR PT2 ANG XK))
  88.   
  89.   ;;;;绘制管道第二条轮廓线
  90.   (command "pline" SXPT3 "width" K K SXPT4 "")
  91.   (command "chprop" (ENTLAST) "" "c" COL "")

  92.   ;;;;绘制管道第一条端头线
  93.   (command "line" SXPT1 SXPT3 "")
  94.   (command "chprop" (ENTLAST) "" "c" 3 "")

  95.   ;;;;绘制管道第二条端头线
  96.   (command "line" SXPT2 SXPT4 "")
  97.   (command )
  98.   (command "chprop" (ENTLAST) "" "c" 3 "")

  99.   (SETVAR "cecolor" OLDCOLOR)
  100.   (SETVAR "cmdecho" 1)
  101. )


  102. ;;;;绘制同一平面的两根管道带弯头----------------------------------------------------
  103. (DEFUN PIPEFILLET (ENAME1 ENAME2 R L DW / ENTDATA1 ENTDATA2 INTER PT1 PT11
  104.         PT12 PT2 PT21 PT22 OLDLAYER ACADOBJ ANG PT3 PT4
  105.         PT5 PT6 XXPT1 XXPT2 XXPT3 XXPT4 XK1 R1 ANG12
  106.         ENTDATA3
  107.       )
  108.   (setq ENTDATA1 (ENTGET ENAME1))
  109.   (setq ENTDATA2 (ENTGET ENAME2))
  110.   (setq PT11 (CDR (ASSOC 10 ENTDATA1)))
  111.   (setq PT12 (CDR (ASSOC 11 ENTDATA1)))
  112.   (setq PT21 (CDR (ASSOC 10 ENTDATA2)))
  113.   (setq PT22 (CDR (ASSOC 11 ENTDATA2)))
  114.   (setq INTER (INTERS
  115.     PT11
  116.     PT12
  117.     PT21
  118.     PT22
  119.         )
  120.   )
  121.   (setq PT1 (if (> (DISTANCE PT11 INTER) (DISTANCE PT12 INTER))
  122.         (PROGN
  123.     PT11
  124.         )
  125.         (PROGN
  126.     PT12
  127.         )
  128.       )
  129.   )
  130.   (setq PT2 (if (> (DISTANCE PT21 INTER) (DISTANCE PT22 INTER))
  131.         (PROGN
  132.     PT21
  133.         )
  134.         (PROGN
  135.     PT22
  136.         )
  137.       )
  138.   )
  139.   (setq PT3 (POLAR INTER (ANGLE INTER PT1) (* R 1.0)))
  140.   (setq PT4 (POLAR INTER (ANGLE INTER PT2) (* R 1.0)))
  141.   (setq ANG12 (/ (ABS (- (ANGLE INTER PT1) (ANGLE INTER PT2))) 2))
  142.   (if (> L 0)
  143.     (PROGN
  144.       (if (> ANG12 1.57079)
  145.   (PROGN
  146.     (setq ANG12 (- 6.283185307 ANG12))
  147.   )
  148.       )
  149.       (setq R1 (* R (/ (COS ANG12) (SIN ANG12))))
  150.       (setq PT5 (POLAR INTER (ANGLE INTER PT1) (+ (* R1 1.0) L)))
  151.       (setq PT6 (POLAR INTER (ANGLE INTER PT2) (+ (* R1 1.0) L)))
  152.       (setq ANG (+ (ANGLE INTER PT1) (* 0.5 PI)))
  153.       (setq XK1 (* DW 0.5))
  154.       (setq XXPT1 (POLAR PT5 ANG XK1))
  155.       (setq ANG (+ PI ANG))
  156.       (setq XXPT2 (POLAR PT5 ANG XK1))
  157.       (setq ANG (+ (ANGLE INTER PT2) (* 0.5 PI)))
  158.       (setq XXPT3 (POLAR PT6 ANG XK1))
  159.       (setq ANG (+ PI ANG))
  160.       (setq XXPT4 (POLAR PT6 ANG XK1))
  161.     )
  162.   )
  163.   (SETVAR "filletrad" R)
  164.   (setq ACADOBJ (vlax-get-acad-object))
  165.   (vla-ZoomCenter ACADOBJ (vlax-3d-point INTER) (* R 4.0))
  166.   (setq OLDLAYER (GETVAR "clayer"))    ;;;;记录当前图层
  167.   (SETVAR "cmdecho" 0)
  168.   (if (> L 0)
  169.     (PROGN
  170.       ;;;;第一条平面弯头直段长度不为0的端线
  171.       (command "line" XXPT1 XXPT2 "")
  172.       (command "chprop" (ENTLAST) "" "c" 3 "")
  173.       ;;;;第二条平面弯头直段长度不为0的端线
  174.       (command "line" XXPT3 XXPT4 "")
  175.       (command "chprop")
  176.       (command "chprop" (ENTLAST) "" "c" 3 "")
  177.     )
  178.   )
  179.   (setq OLDLYTPE (GETVAR "celtype"))
  180.   (setq OLDCOLOR (GETVAR "cecolor"))
  181.   (SETVAR "clayer" (CDR (ASSOC 8 ENTDATA1)))    ;;;;设定当前图层为
  182.   (command "fillet" PT3 PT4)
  183.   (setq ENTDATA3 (ENTLAST))
  184.   (setq SCALE1 (/ 100 (GETVAR "LTSCALE")))
  185.   
  186.   (SETVAR "clayer" OLDLAYER)        ;;;;还原图层为
  187.   (SETVAR "cmdecho" 1)
  188.   ENTDATA3
  189. )


  190. ;;;;绘制管道----------------------------------------------------
  191. (DEFUN PIPESFILLET (LINESS R L DW / ENAME1 ENAME2 ENTDATA1 ENTDATA2 INDEX1
  192.          INDEX2 PT1 PT2 PT3 PT4
  193.        )
  194.   (setq INDEX1 0)
  195.   (setq ARCSS (SSADD))
  196.   (setq ACADOBJ (vlax-get-acad-object))
  197.   (setq ACDOC (vla-get-ActiveDocument ACADOBJ))
  198.   (vla-StartUndoMark ACDOC)
  199.   (REPEAT (- (SSLENGTH LINESS) 1)
  200.     (setq ENAME1 (SSNAME LINESS INDEX1))
  201.     (setq ENTDATA1 (ENTGET ENAME1))
  202.     (setq PT1 (CDR (ASSOC 10 ENTDATA1)))
  203.     (setq PT2 (CDR (ASSOC 11 ENTDATA1)))
  204.     (setq INDEX2 (1+ INDEX1))
  205.     (while (and
  206.        (< INDEX2 (SSLENGTH LINESS))
  207.      )
  208.       (setq ENAME2 (SSNAME LINESS INDEX2))
  209.       (setq INDEX2 (1+ INDEX2))
  210.       (setq ENTDATA2 (ENTGET ENAME2))
  211.       (setq PT3 (CDR (ASSOC 10 ENTDATA2)))
  212.       (setq PT4 (CDR (ASSOC 11 ENTDATA2)))
  213.       (if (INTERS
  214.       PT1
  215.       PT2
  216.       PT3
  217.       PT4
  218.     )
  219.   (PROGN
  220.     (setq ARCSS (SSADD (PIPEFILLET ENAME1 ENAME2 R L DW) ARCSS))
  221.   )
  222.       )
  223.     )
  224.     (setq INDEX1 (1+ INDEX1))
  225.   )
  226.   (vla-EndUndoMark ACDOC)
  227.   ARCSS
  228. )


  229. ;;;;管道颜色设置----------------------------------------------------
  230. (DEFUN SET_COLOR (CONM / COSTR)
  231.   (DEFUN MAP_COLOR (CKEY MNO)
  232.     (START_IMAGE CKEY)
  233.     (FILL_IMAGE 0 0 (DIMX_TILE CKEY) (DIMY_TILE CKEY) MNO)
  234.     (END_IMAGE)
  235.   )
  236.   (COND
  237.     ((= 0 CONM)
  238.       (setq COSTR "Byblock")
  239.     )
  240.     ((= 1 CONM)
  241.       (setq COSTR "Red")
  242.     )
  243.     ((= 2 CONM)
  244.       (setq COSTR "Yellow")
  245.     )
  246.     ((= 3 CONM)
  247.       (setq COSTR "Green")
  248.     )
  249.     ((= 4 CONM)
  250.       (setq COSTR "Cyan")
  251.     )
  252.     ((= 5 CONM)
  253.       (setq COSTR "Bule")
  254.     )
  255.     ((= 6 CONM)
  256.       (setq COSTR "Magenta")
  257.     )
  258.     ((= 7 CONM)
  259.       (setq COSTR "color")
  260.     )
  261.     ((= 256 CONM)
  262.       (setq COSTR "Bylayer")
  263.     )
  264.     (T
  265.       (setq COSTR "")
  266.     )
  267.   )
  268.   (COND
  269.     ((= 0 COL)
  270.       (MAP_COLOR "col" 7)
  271.       (setq COL 7)
  272.     )
  273.     ((= 256 COL)
  274.       (MAP_COLOR "col" (CDR (ASSOC 62 (TBLSEARCH "layer" LAY))))
  275.       (setq COL (CDR (ASSOC 62 (TBLSEARCH "layer" LAY))))
  276.     )
  277.     (T
  278.       (MAP_COLOR "col" CONM)
  279.     )
  280.   )
  281.   (if (= 256 CONM)
  282.     (PROGN
  283.       (SET_TILE "cnu" (STRCAT "<" (ITOA (CDR (ASSOC 62 (TBLSEARCH "layer"
  284.                   LAY
  285.                    )
  286.                )
  287.           )
  288.           ) ">" COSTR
  289.           )
  290.       )
  291.     )
  292.     (PROGN
  293.       (SET_TILE "cnu" (STRCAT "<" (ITOA CONM) ">" COSTR))
  294.     )
  295.   )
  296. )

  297. ;;;;绘制管道颜色等设置窗口
  298. (DEFUN DCL_PIPEDRAW1 ()
  299.   (setq DCL_ID (LOAD_DIALOG "pipetest"))
  300.   (NEW_DIALOG "pipetest" DCL_ID)
  301.   (SET_TILE "pipe_dw" (RTOS PIPE_DW1 2 1))
  302.   (SET_TILE "pipe_r" (RTOS PIPE_R1 2 2))
  303.   (SET_TILE "pipe_l" (RTOS PIPE_L1 2 2))
  304.   (SET_TILE "pipe_w" (RTOS PIPE_W1 2 2))
  305.   (setq COL COL1)
  306.   (SET_COLOR COL)
  307.   (ACTION_TILE "col" "(if (setq cnu (ACAD_ColorDlg col))(progn (setq col cnu)(set_color col))) ")
  308.   (ACTION_TILE "accept" "(ok_pipedraw1) (done_dialog 1)")
  309.   (START_DIALOG)
  310. )


  311. (DEFUN OK_PIPEDRAW1 ()
  312.   (setq DW (ATOF (GET_TILE "pipe_dw")))
  313.   (setq R (ATOF (GET_TILE "pipe_r")))
  314.   (setq L (ATOF (GET_TILE "pipe_l")))
  315.   (setq K (ATOF (GET_TILE "pipe_w")))
  316.   (setq PIPE_DW1 (ATOF (GET_TILE "pipe_dw")))
  317.   (setq PIPE_R1 (ATOF (GET_TILE "pipe_r")))
  318.   (setq PIPE_L1 (ATOF (GET_TILE "pipe_l")))
  319.   (setq PIPE_W1 (ATOF (GET_TILE "pipe_w")))
  320.   (setq COL1 COL)
  321. )


  322. ;;;;绘制管道----------------------------------------------------
  323. (vl-ACAD-defun (DEFUN C:DP (/ ARCSS DW_INDEX DW_LIST ENAME INDEX LINETYPE
  324.             PIPESS R_LIST COL DW R L K LAY ENAME1 ENTDATA1
  325.             INDEX1 DW R L K
  326.          )
  327.      
  328.          (command "layer" "n" "Center" "l" "CENTER" "Center" "c" "8" "Center" "lw" "0.15" "Center" "")    ;;;;建立中心线图层
  329.          (command "layer" "n" "管道" "l" "continuous" "管道" "c" "2" "管道" "lw" "0.25" "管道" "")      ;;;;建立管道轮廓线图层
  330.      (setvar "CLAYER" "管道")   ;;;设置图层名"管道"为当前图层
  331.      (VL-LOAD-COM)
  332.      (SETVAR "cmdecho" 0)
  333.      (command ".UNDO")
  334.      (command "BE")
  335.      (setq SNAP (GETVAR "osmode"))
  336.      (SETVAR "osmode" 0)
  337.      (setq BUK (GETVAR "PICKBOX"))
  338.      (SETVAR "PEDITACCEPT" 1)
  339.      (OR
  340.        PIPE_DW1
  341.        (setq PIPE_DW1 250)    ;;;;管道外径
  342.      )
  343.      (OR
  344.        PIPE_R1
  345.        (setq PIPE_R1 250)     ;;;;弯曲半径
  346.      )
  347.      (OR
  348.        PIPE_L1
  349.        (setq PIPE_L1 0)       ;;;;弯头直段长度
  350.      )
  351.      (OR
  352.        PIPE_W1
  353.        (setq PIPE_W1 30)      ;;;;管道轮廓线宽度
  354.      )
  355.      (OR
  356.        COL1
  357.        (setq COL1 2)          ;;;;管道和弯头的轮廓线颜色
  358.      )
  359.      (PRINC "\n请选择管道中心线: ")
  360.      (setq PIPESS (SSGET (LIST (CONS 0 "line"))))
  361.      (setq INDEX1 0)
  362.      (setq OLDMODE (GETVAR "osmode"))
  363.      (SETVAR "osmode" 0)
  364.      (setq ENAME1 (SSNAME PIPESS INDEX1))
  365.      (setq ENTDATA1 (ENTGET ENAME1))
  366.      (setq LAY (CDR (ASSOC 8 ENTDATA1)))
  367.      (DCL_PIPEDRAW1)
  368.      (setq ARCSS (PIPESFILLET PIPESS R L DW))
  369.      (setq INDEX 0)
  370.      (LINECO PIPESS)
  371.      (REPEAT (SSLENGTH PIPESS)
  372.        (setq ENAME (SSNAME PIPESS INDEX))
  373.        (setq INDEX (1+ INDEX))
  374.        (setq LINETYPE (CDR (ASSOC 0 (ENTGET ENAME))))
  375.        (if (= LINETYPE "LINE")
  376.          (PROGN
  377.            (LINESX ENAME DW)
  378.          )
  379.          (PROGN
  380.            (ARCSX ENAME DW)
  381.          )
  382.        )
  383.      )
  384.      (setq INDEX 0)
  385.      (REPEAT (SSLENGTH ARCSS)
  386.        (setq ENAME (SSNAME ARCSS INDEX))
  387.        (setq INDEX (1+ INDEX))
  388.        (setq LINETYPE (CDR (ASSOC 0 (ENTGET ENAME))))
  389.        (ARCSX ENAME DW)
  390.      )
  391.      (SETVAR "nomutt" 0)
  392.      (SETVAR "PICKBOX" BUK)
  393.      (SETVAR "osmode" SNAP)
  394.      (command ".UNDO")
  395.      (command "E")
  396.      (PRINC)
  397.      (UNLOAD_DIALOG DCL_ID)
  398.          )
  399. )
  400. 'C:DP


  401. ;;;;绘制弯头颜色等设置窗口
  402. (DEFUN DCL_BENDDRAW ()
  403.   (setq DCL_ID (LOAD_DIALOG "pipetest.dcl"))
  404.   (NEW_DIALOG "bendtest" DCL_ID)
  405.   (SET_TILE "bend_dw" (RTOS PIPE_DW1))
  406.   (SET_TILE "bend_r" (RTOS PIPE_R1))
  407.   (SET_TILE "bend_w" (RTOS PIPE_W1))
  408.   (setq COL 2)    ;;;;设置弯头默认颜色为黄色
  409.   (SET_COLOR COL)
  410.   (ACTION_TILE "col" "(if (setq cnu (ACAD_ColorDlg col))(progn (setq col cnu)(set_color col))) ")
  411.   (ACTION_TILE "accept" "(ok_benddraw) (done_dialog 1)")
  412.   (START_DIALOG)
  413. )


  414. (DEFUN OK_BENDDRAW ()
  415.   (setq POD (ATOF (GET_TILE "bend_dw")))
  416.   (setq BR (ATOF (GET_TILE "bend_r")))
  417.   (setq K (ATOF (GET_TILE "bend_w")))
  418.   (setq POR (/ POD 2))
  419.   (setq PIPE_DW1 (ATOF (GET_TILE "bend_dw")))
  420.   (setq PIPE_R1 (ATOF (GET_TILE "bend_r")))
  421.   (setq PIPE_W1 (ATOF (GET_TILE "bend_w")))
  422. )


  423. ;;;;绘制不同平面弯头----------------------------------------------------
  424. (vl-ACAD-defun (DEFUN C:DW (/ PIPESS_G PIPESS_D INDEX1 ENAME1 ENTDATA1
  425.             INDEX1 PT11 PT12 PT13 PT14 BCP PT1 PT3 ANG1
  426.             ANG2 CSP CEP P11 P12 P13 P14 P21 P22 P23 P24
  427.             P31 P32 INT21 INT24 SCALE1 POD BR K POR COL
  428.             OLDMODE
  429.          )
  430.          (command "layer" "n" "Center" "l" "CENTER" "Center" "c" "8" "Center" "lw" "0.15" "Center" "")    ;;;;建立中心线图层
  431.          (command "layer" "n" "管道" "l" "continuous" "管道" "c" "2" "管道" "lw" "0.25" "管道" "")      ;;;;建立管道轮廓线图层
  432.      (setvar "CLAYER" "管道")   ;;;设置图层名"管道"为当前图层
  433.      (VL-LOAD-COM)
  434.      (SETVAR "cmdecho" 0)
  435.      (command ".UNDO")
  436.      (command "BE")
  437.      (setq SNAP (GETVAR "osmode"))
  438.      (SETVAR "osmode" 0)
  439.      (setq BUK (GETVAR "PICKBOX"))
  440.      (SETVAR "PEDITACCEPT" 1)
  441.      (PRINC "\n请选择高处管道中心线: \n")
  442.      (setq PIPESS_G (SSGET (LIST (CONS 0 "line"))))
  443.      (PRINC "\n请选择低处管道中心线: \n")
  444.      (setq PIPESS_D (SSGET (LIST (CONS 0 "line"))))
  445.      (DCL_BENDDRAW)
  446.      (setq INDEX1 0)
  447.      (setq INT21 nil)
  448.      (setq INT24 nil)
  449.      (setq ENAME1 (SSNAME PIPESS_G INDEX1))
  450.      (setq ENTDATA1 (ENTGET ENAME1))
  451.      (setq PT11 (CDR (ASSOC 10 ENTDATA1)))
  452.      (setq PT12 (CDR (ASSOC 11 ENTDATA1)))
  453.      (setq ENAME1 (SSNAME PIPESS_D INDEX1))
  454.      (setq ENTDATA1 (ENTGET ENAME1))
  455.      (setq PT13 (CDR (ASSOC 10 ENTDATA1)))
  456.      (setq PT14 (CDR (ASSOC 11 ENTDATA1)))
  457.      (setq BCP (INTERS
  458.            PT11
  459.            PT12
  460.            PT13
  461.            PT14
  462.          )
  463.      )
  464.      (setq PT1 (if (> (DISTANCE PT11 BCP) (DISTANCE PT12 BCP))
  465.            (PROGN
  466.              PT11
  467.            )
  468.            (PROGN
  469.              PT12
  470.            )
  471.          )
  472.      )
  473.      (setq PT3 (if (> (DISTANCE PT13 BCP) (DISTANCE PT14 BCP))
  474.            (PROGN
  475.              PT13
  476.            )
  477.            (PROGN
  478.              PT14
  479.            )
  480.          )
  481.      )
  482.      (setq ANG1 (ANGLE BCP PT1))
  483.      (setq ANG2 (ANGLE BCP PT3))
  484.      (setq CSP (POLAR BCP ANG1 BR))
  485.      (setq CEP (POLAR BCP ANG2 BR))
  486.      (setq P11 (POLAR CSP (+ (* PI 0.5) ANG1) POR))
  487.      (setq P12 (POLAR BCP (+ (* PI 0.5) ANG1) POR))
  488.      (setq P13 (POLAR BCP (+ (* PI 1.5) ANG1) POR))
  489.      (setq P14 (POLAR CSP (+ (* PI 1.5) ANG1) POR))
  490.      (setq P21 (POLAR BCP (+ (* PI 0.5) ANG2) POR))
  491.      (setq P22 (POLAR CEP (+ (/ PI 2) ANG2) POR))
  492.      (setq P23 (POLAR CEP (+ (* PI 1.5) ANG2) POR))
  493.      (setq P24 (POLAR BCP (+ (* PI 1.5) ANG2) POR))
  494.      (setq INT21 (INTERS
  495.              P14
  496.              P13
  497.              P21
  498.              P22
  499.            )
  500.      )
  501.      (setq INT24 (INTERS
  502.              P11
  503.              P12
  504.              P24
  505.              P23
  506.            )
  507.      )
  508.      (if (NULL INT21)
  509.        (PROGN
  510.        )
  511.        (PROGN
  512.          (setq P21 INT21)
  513.        )
  514.      )
  515.      (if (NULL INT24)
  516.        (PROGN
  517.        )
  518.        (PROGN
  519.          (setq P24 INT24)
  520.        )
  521.      )
  522.      (setq SCALE1 (/ 100 (GETVAR "LTSCALE")))
  523.      
  524.      ;;;;非同平面弯头的第一条中心线
  525.      (command "line" CSP BCP "")
  526.      (command "chprop" (ENTLAST) "" "layer" "Center" "c" "8" "LT" "CENTER" "LW" "0.15" "S" SCALE1 "")
  527.      
  528.      ;;;;非同平面弯头的第二条中心线
  529.      (command "line" BCP CEP "")
  530.      (command "chprop" (ENTLAST) "" "layer" "Center" "c" "8" "LT" "CENTER" "LW" "0.15" "S" SCALE1 "")
  531.      
  532.      ;;;;非同平面弯头的第一条轮廓线
  533.      (command "pline" P11 "w" K K P12 "")
  534.      (command "chprop" (ENTLAST) "" "c" COL "")
  535.      
  536.      ;;;;非同平面弯头的第二条轮廓线
  537.      (command "pline" P12 "w" K K "a" "a" 180 "c" BCP "")
  538.      (command "chprop" (ENTLAST) "" "c" COL "")
  539.      
  540.      ;;;;非同平面弯头的第三条轮廓线
  541.      (command "pline" P13 "w" K K P14 "")
  542.      (command "chprop" (ENTLAST) "" "c" COL "")
  543.      
  544.      ;;;;非同平面弯头的第四条端头线
  545.      (command "line" P14 P11 "")
  546.      (command "chprop" (ENTLAST) "" "c" 3 "")
  547.      
  548.      ;;;;非同平面弯头的第五条轮廓线
  549.      (command "pline" P21 "w" K K P22 "")
  550.      (command "chprop" (ENTLAST) "" "c" COL "")
  551.      
  552.      ;;;;非同平面弯头的第六条端头线
  553.      (command "line" P22 P23 "")
  554.      (command "chprop" (ENTLAST) "" "c" 3 "")
  555.      
  556.      ;;;;非同平面弯头的第七条轮廓线
  557.      (command "pline" P23 "w" K K P24 "")
  558.      (command "chprop" (ENTLAST) "" "c" COL "")
  559.      
  560.      (SETVAR "cmdecho" 1)
  561.      (SETVAR "osmode" OLDMODE)
  562.      (UNLOAD_DIALOG DCL_ID)
  563.      (SETVAR "nomutt" 0)
  564.      (SETVAR "PICKBOX" BUK)
  565.      (SETVAR "osmode" SNAP)
  566.      (command ".UNDO")
  567.      (command "E")
  568.      (PRINC)
  569.          )
  570. )
  571. 'C:DW

  572. (PRINC)
  573. (PRINC "\n  单线管变双线管,起动命令:"dp"\n")
  574. (PRINC "\n  画上下弯头,   起动命令:"dw"\n")
  575. (PRINC)




附件: 您需要 登录 才可以下载或查看,没有账号?注册

评分

参与人数 1明经币 -1 收起 理由
xyp1964 -1

查看全部评分

 楼主| 发表于 2022-5-31 14:16 | 显示全部楼层
能否麻烦斑竹将此贴移到“AutoLISP/Visual LISP” 编程技术版块?
回复

使用道具 举报

发表于 2022-5-31 18:58 | 显示全部楼层
竟然敢明目张胆搞破解
回复

使用道具 举报

 楼主| 发表于 2022-5-31 19:00 | 显示全部楼层
xyp1964 发表于 2022-5-31 18:58
竟然敢明目张胆搞破解

不知道从哪里找来的了,你觉得我会破解?
回复

使用道具 举报

发表于 2022-5-31 22:24 | 显示全部楼层
这是怎么用的,运行有问题
回复

使用道具 举报

 楼主| 发表于 2022-6-1 15:48 | 显示全部楼层
start4444 发表于 2022-5-31 22:24
这是怎么用的,运行有问题

我用的CAD2007可以使用,其他版本CAD没用过
回复

使用道具 举报

发表于 2022-11-20 11:14 | 显示全部楼层
单线变双线管道,单线为PL线。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2022-11-20 13:00 | 显示全部楼层
一直以为都是加分的,居然还可以减分
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-28 06:04 , Processed in 0.255572 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表