明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2598|回复: 11

总图单线管布置插件---

[复制链接]
发表于 2023-1-30 17:13:06 | 显示全部楼层 |阅读模式
本帖最后由 liuhe 于 2023-2-17 08:34 编辑
  1. <blockquote><div class="blockcode"><blockquote>(DEFUN C:Q2 (/  SETVARMODE  ODLST  CSL2 LAY  KEYMODE   DN   D11  LOOP STR  P1   P2
  2.        E1    W11  W    P3   ANG1 ANG2 XK  YS   N    E1   E2
  3.        E3    E4   E5   E6   PP0   PP1    PP11 D11 DN LAY CZ PN XK YS
  4.       )
  5.   (DEFUN JW(ODLST)
  6.   (MAPCAR 'SETVAR
  7.          '("cmdecho"  "osmode"       "peditaccept"
  8.      "attdia"  "attreq"       "dimzin"
  9.      "DYNMODE"  "shortcutmenu" "autosnap"
  10.     )
  11.          ODLST
  12.        )
  13.     (GC)
  14.   )
  15.   (DEFUN SETVARMODE ()
  16.     (MAPCAR 'SETVAR
  17.       (LIST "OSMODE"    "GRIDMODE"    "POLARMODE"
  18.       "autosnap"    "OrthoMODE"    "POLARADDANG"
  19.      )
  20.       (LIST 16383 0 4 47 0 "45;90;135;180;270")
  21.     )
  22.   )
  23.   (setq  ODLST (MAPCAR 'GETVAR
  24.      '("cmdecho"    "osmode"   "peditaccept"
  25.        "attdia"    "attreq"   "dimzin"
  26.        "DYNMODE"    "shortcutmenu" "autosnap"
  27.       )
  28.    )
  29.   )
  30.   (MAPCAR 'SETVAR
  31.     '("cmdecho"      "peditaccept"   "attdia"
  32.       "attreq"      "dimzin"      "DYNMODE"
  33.       "shortcutmenu"  "gridmode"      "autosnap"
  34.      )
  35.     '(0 1 0 0 8 1 7 0 31 )
  36.   )
  37.   
  38.   (SETQ  CSL2  (LIST "D11" "LAY" "CZ" "PN" "XK" "YS""N")
  39.   LAY  (GETVAR 'CLAYER)
  40.   KEYMODE  "单线管道"
  41.   )
  42.   (IF (NOT (AND
  43.        (VLAX-LDATA-GET "KEYMODE" KEYMODE)
  44.        (=  (LENGTH (vl-remove 'NIL(VLAX-LDATA-GET "KEYMODE" KEYMODE)))
  45.     (LENGTH CSL2)
  46.        )
  47.      )
  48.       )
  49.     (PROGN
  50.       (VLAX-LDATA-PUT
  51.   "KEYMODE"
  52.   KEYMODE
  53.   (LIST 100 LAY "衬塑钢管" "1.0" 2 256 1)
  54.       )
  55.     )
  56.   )
  57.   (MAPCAR (function (lambda (KEY DATA) (set (read key) DATA)))
  58.     CSL2
  59.     (VLAX-LDATA-GET "KEYMODE" KEYMODE)
  60.   )
  61. ;;;;;;;;以上通过字典,读取变量
  62. ;;;;;;;;;;;;;;;;;;;;;;;;;;;
  63. ;;;;;;;;;;;;;;;;;;;;;;;;;;

  64.   (IF (NOT
  65.   (SETQ DN (GETREAL (STRCAT "\n请输入管径<" (RTOS D11 2 0) ">: ")))
  66.       )
  67.     (SETQ DN D11)
  68.     (SETQ D11 DN)
  69.   )
  70.   (SETVARMODE)
  71.   (SETQ LOOP T)
  72.   (WHILE LOOP
  73.     (SETQ STR (STRCAT "管径DN:"
  74.           (ITOA (FIX DN))
  75.           "; 材质:"
  76.           cz
  77.           "; PN:"
  78.           PN
  79.           "Mpa; "
  80.         )
  81.     )
  82.     (setvar "modemacro" (strcat STR))
  83.     (INITGET " S SS SSS N NN NNN D DD DDD W WW WWW T TT TTT")
  84.     (SETQ
  85.       P1 (GETPOINT (STRCASE (STRCAT "起点\n【S:设置】\n【N:设置】\n【W:弯头】\n【T:三通】\n【D:断管】")))
  86.     )
  87.     (COND
  88.       ((OR (= P1 "S") (= P1 "SSS") (= P1 "SS"))
  89.   (DXGDSZ1)
  90.   (MAPCAR  (function (lambda (KEY DATA) (set (read key) DATA)))
  91.     CSL2
  92.     (VLAX-LDATA-GET "KEYMODE" KEYMODE)
  93.   )
  94.   (SETQ DN D11)
  95.       )
  96.       ((OR (= P1 "N") (= P1 "NN") (= P1 "NNN"))(SETQ N (GETINT (strcat "\n 输入多线数量<" (RTOS 2 2 0) ">"))))
  97.       ((OR (= P1 "D") (= P1 "DD") (= P1 "DDD"))(DXDG DN YS))
  98.       ((OR (= P1 "W") (= P1 "WW") (= P1 "WWW"))(WTDG YS LAY))
  99.       ((OR (= P1 "T") (= P1 "TT") (= P1 "TTT"))(STDG YS LAY))
  100.       ((= P1 NIL) (progn(JW ODLST) (vl-exit-with-value 0)))
  101.       (T
  102.        (IF (<= N 0)(SETQ N 1))
  103.        (SETQ LROW 200)
  104.        (IF (= (CDR (ASSOC 62 (tblsearch "LAYER" LAY))) YS)(SETQ YS 256))
  105.        (SETQ P1 (LIST (CAR P1) (CADR P1) 0))
  106.        (SETQ P2 (GETPOINT P1 (STRCAT "\n下一点:")))
  107.        (IF (= P2 nil)(progn (JW ODLST)(vl-exit-with-value 0)))
  108.        (SETQ P2  (LIST (CAR P2) (CADR P2) 0)
  109.        I  1
  110.        )
  111.        (REPEAT N
  112.    (SETQ P11 (POLAR P1 (+ (* 0.5 PI) (ANGLE P1 P2)) (* (- I 1) LROW))
  113.          P22 (POLAR P2 (+ (* 0.5 PI) (ANGLE P1 P2)) (* (- I 1) LROW))
  114.    )
  115.    (entmakeX
  116.      (list '(0 . "LWPOLYLINE")
  117.      '(100 . "AcDbEntity")
  118.      '(100 . "AcDbPolyline")
  119.      (cons 90 2)
  120.      (CONS 62 YS)
  121.      (CONS 8 LAY)
  122.      (CONS 43 XK)
  123.      (cons 10 P11)
  124.      (cons 10 P22)
  125.      )
  126.    )
  127.    (SET (READ (STRCAT "E" (RTOS I 2 0))) (ENTLAST))
  128.    (SETQ I (1+ i))
  129.        )
  130.        (WHILE LOOP
  131.    (SETVAR "POLARADDANG"
  132.      (strcat "45;90;135;180;270;"
  133.        (ANGTOS (ANGLE P1 P2) 0)
  134.        ";"
  135.        (ANGTOS (+ (* 0.5 PI) (ANGLE P1 P2)) 0)
  136.        ";"
  137.        (ANGTOS (+ (* 1.5 PI) (ANGLE P1 P2)) 0)
  138.      )
  139.    )
  140.    (SETQ STR (STRCAT "管径DN:"
  141.          (ITOA (FIX DN))
  142.          "; 材质:"
  143.          cz
  144.          "; PN:"
  145.          PN
  146.          "Mpa"
  147.        )
  148.    )
  149.    (setvar "modemacro" (strcat (EVAL STR)))
  150.    (IF (NOT W11)
  151.      (SETQ W11 1)
  152.    )
  153.    (IF (NOT (SETQ  W
  154.        (GETINT
  155.          (STRCAT
  156.            "\n【1:共线】\n【2:上下弯头】\n【3:下上弯头】\n【11:断管】\n【22:上下弯头】\n【33:下上弯头】\n【默认】 <"
  157.            (RTOS W11 2 0)
  158.            ">: "
  159.          )
  160.        )
  161.       )
  162.        )
  163.      (SETQ W W11)
  164.      (if (member w (list 1 2 3 11 22 33))
  165.        (SETQ W11 W)
  166.      )
  167.    )
  168.    (COND
  169.      ((= W 11) ;;;;;断管
  170.       (SETQ I 1)
  171.       (REPEAT N
  172.         (SETQ ENT  (EVAL (READ (STRCAT "E" (RTOS I 2 0))))
  173.         PP0  (vlax-curve-getEndPoint ENT)
  174.         PP1  (POLAR PP0 (ANGLE P1 P2) 50)
  175.         )
  176.         (DXDG1 DN YS PP0 PP1)
  177.         (SETQ I(1+ I))
  178.         )
  179.       (progn (JW ODLST) (vl-exit-with-value 0))
  180.       )
  181.      ((= W 22) ;;;;;向下弯头
  182.       (SETQ I 1)
  183.       (REPEAT N
  184.         (SETQ ENT  (EVAL (READ (STRCAT "E" (RTOS I 2 0))))
  185.         PP0  (vlax-curve-getEndPoint ENT)
  186.         PP1  (POLAR PP0 (ANGLE P2 P1) 50)
  187.         )
  188.         (WTDG1 YS LAY  PP0 PP1)
  189.         (SETQ I(1+ I))
  190.         )
  191.       (progn (JW ODLST) (vl-exit-with-value 0))
  192.       )
  193.      ((= W 33) ;;;;;向上弯头
  194.       (SETQ I 1)
  195.       (REPEAT N
  196.         (SETQ ENT  (EVAL (READ (STRCAT "E" (RTOS I 2 0))))
  197.         PP0  (vlax-curve-getEndPoint ENT)
  198.         PP1  (POLAR PP0 (ANGLE P1 P2) 50)
  199.         PP2  (POLAR PP1 (ANGLE P1 P2) 50)
  200.         
  201.         )
  202.         (WTDG1 YS LAY PP1 PP2)
  203.         (SETQ I(1+ I))
  204.         )
  205.       (progn (JW ODLST) (vl-exit-with-value 0))
  206.       )
  207.      ((= W 1);;;;;;同一个水平面
  208.       (SETQ P3 (GETPOINT P2 (STRCASE (STRCAT "下一点\n"))))
  209.       (IF  (= P3 NIL)
  210.         (progn (JW ODLST) (vl-exit-with-value 0))
  211.       )
  212.       (SETQ P3   (LIST (CAR P3) (CADR P3) 0)
  213.       I    1
  214.       LROW -200
  215.       )
  216.       (SETQ ENTLST (ENTGET E1)
  217.       V90   (CDR (ASSOC 90 ENTLST))
  218.       ENTLST (vl-remove-if
  219.          (function
  220.            (LAMBDA (X) (OR (= (CAR X) 210)))
  221.          )
  222.          ENTLST
  223.        )
  224.       ENTLST (SUBST  (CONS 90 (1+ V90))
  225.         (ASSOC 90 ENTLST)
  226.         ENTLST
  227.        )
  228.       LST   (LIST (CONS 10 P3) (LIST 210 0.0 0.0 1.0))
  229.       )
  230.       (ENTMOD (APPEND ENTLST LST))
  231.       (IF  (> N 1)
  232.         (PROGN
  233.     (REPEAT  (1- N)
  234.       (IF (EVAL (READ (STRCAT "E" (RTOS (1+ I) 2 0))))
  235.         (PROGN
  236.           (SETQ ENTLST (ENTGET
  237.              (EVAL
  238.                (READ (STRCAT "E" (RTOS (1+ I) 2 0)))
  239.              )
  240.            )
  241.           ENTLST (vl-remove-if-not
  242.              (FUNCTION (LAMBDA (X) (= (CAR X) 10)))
  243.              ENTLST
  244.            )
  245.           PP0     (CDR (NTH 0 ENTLST))
  246.           )
  247.           (ENTDEL
  248.       (EVAL (READ (STRCAT "E" (RTOS (1+ I) 2 0))))
  249.           )
  250.           (VLA-OFFSET
  251.       (VLAX-ENAME->VLA-OBJECT E1)
  252.       (* I LROW)
  253.           )
  254.           (SETQ ENTLST (ENTGET (ENTLAST))
  255.           ENTLST (SUBST (CONS 10 PP0)
  256.             (ASSOC 10 ENTLST)
  257.             ENTLST
  258.            )

  259.           )
  260.           (ENTMOD ENTLST)
  261.           (SET (READ (STRCAT "E" (RTOS (1+ I) 2 0)))
  262.          (ENTLAST)
  263.           )   
  264.         )
  265.       )
  266.       (SETQ I (1+ I))
  267.     )
  268.         )
  269.       )
  270.       (SETQ P1 P2
  271.       P2 P3
  272.       )
  273.      )
  274.      ((= W 2)            ;;;;;;执行上下弯头
  275.       (SETQ P3 (GETPOINT P2 (STRCASE (STRCAT "下一点\n"))))
  276.       (IF  (= P3 NIL)
  277.         (progn (JW ODLST) (vl-exit-with-value 0))
  278.       )
  279.       (SETQ P3   (LIST (CAR P3) (CADR P3) 0)
  280.       I    1
  281.       LROW -200
  282.       )
  283.       (SETQ ANG1 (+ (ANGLE P1 P2) (* 0.75 PI))
  284.       ANG2 (+ (ANGLE P1 P2) (* 1.25 PI))
  285.       )
  286.       (SETQ E1LST  (ENTGET E1)
  287.       E1LST  (vl-remove-if
  288.         (function
  289.           (LAMBDA (X)
  290.             (OR (= (CAR X) -1)
  291.           (= (CAR X) 330)
  292.           (= (CAR X) 5)
  293.           (= (CAR X) 410)
  294.             )
  295.           )
  296.         )
  297.         E1LST
  298.       )
  299.       )
  300.       (entmakeX E1LST)
  301.       (IF  (> N 1)
  302.         (PROGN
  303.     (SETQ ENTLST (ENTGET E1)
  304.           V90    (CDR (ASSOC 90 ENTLST))
  305.           ENTLST (vl-remove-if
  306.              (function
  307.          (LAMBDA (X) (= (CAR X) 210))
  308.              )
  309.              ENTLST
  310.            )
  311.           ENTLST (SUBST (CONS 90 (1+ V90))
  312.             (ASSOC 90 ENTLST)
  313.             ENTLST
  314.            )
  315.           LST    (LIST (CONS 10 P3) (LIST 210 0.0 0.0 1.0))
  316.     )
  317.     (ENTMOD (APPEND ENTLST LST))
  318.     (REPEAT  (1- N)
  319.       (VLA-OFFSET (VLAX-ENAME->VLA-OBJECT E1) (* I LROW))
  320.       (SETQ  ENTLST (ENTGET (ENTLAST))
  321.       ENTLST (vl-remove-if-not
  322.          (FUNCTION (LAMBDA (X) (= (CAR X) 10))
  323.          )
  324.          ENTLST
  325.              )
  326.       PP0    (CDR (NTH 0 (REVERSE ENTLST)))
  327.       PP1    (CDR (NTH 1 (REVERSE ENTLST)))
  328.       PP11   (POLAR PP1 (ANGLE P2 P3) 50)
  329.       )
  330.       (ENTDEL (ENTLAST))
  331.       (SETQ  ENTLST (ENTGET
  332.          (EVAL (READ (STRCAT "E" (RTOS (1+ I) 2 0)))
  333.          )
  334.              )
  335.       ENTLST (SUBST (CONS 10 PP1)
  336.               (ASSOC 10 (REVERSE ENTLST))
  337.               ENTLST
  338.              )
  339.       )
  340.       (ENTMOD ENTLST)
  341.       (entmakeX (list '(0 . "ARC")
  342.           (CONS 62 YS)
  343.           (CONS 8 LAY)
  344.           (cons 10 PP1)
  345.           (cons 40 50)
  346.           (cons 50 ang2)
  347.           (cons 51 ang1)
  348.           )
  349.       )
  350.       (entmakeX
  351.         (list '(0 . "LWPOLYLINE")
  352.         '(100 . "AcDbEntity")
  353.         '(100 . "AcDbPolyline")
  354.         (cons 90 2)
  355.         (CONS 62 YS)
  356.         (CONS 8 LAY)
  357.         (CONS 43 XK)
  358.         (cons 10 PP11)
  359.         (cons 10 PP0)
  360.         )
  361.       )
  362.       (SET (READ (STRCAT "E" (RTOS (1+ I) 2 0)))
  363.            (ENTLAST)
  364.       )
  365.       (SETQ I (1+ I))
  366.     )
  367.     (ENTDEL E1)
  368.         )
  369.       )
  370.       (SETQ E1 (entmakeX
  371.            (list '(0 . "LWPOLYLINE")
  372.            '(100 . "AcDbEntity")
  373.            '(100 . "AcDbPolyline")
  374.            (cons 90 2)
  375.            (CONS 62 YS)
  376.            (CONS 8 LAY)
  377.            (CONS 43 XK)
  378.            (cons 10 (POLAR P2 (ANGLE P2 P3) 50))
  379.            (cons 10 P3)
  380.            )
  381.          )
  382.       )
  383.       (entmakeX (list '(0 . "ARC")
  384.           (CONS 62 YS)
  385.           (CONS 8 LAY)
  386.           (cons 10 P2)
  387.           (cons 40 50)
  388.           (cons 50 ang2)
  389.           (cons 51 ang1)
  390.           )
  391.       )

  392.       (SETQ P1 P2
  393.       P2 P3
  394.       )
  395.      )
  396.      ((= W 3)             ;;;;;执行下上弯头
  397.       (SETQ P3 (GETPOINT P2 (STRCASE (STRCAT "下一点\n"))))
  398.       (IF  (= P3 NIL)
  399.         (progn (JW ODLST) (vl-exit-with-value 0))
  400.       )
  401.       (SETQ P3   (LIST (CAR P3) (CADR P3) 0)
  402.       I    1
  403.       LROW -200
  404.       )
  405.       (SETQ ANG1 (+ (ANGLE P3 P2) (* 0.75 PI))
  406.       ANG2 (+ (ANGLE P3 P2) (* 1.25 PI))
  407.       )
  408.       (SETQ E1LST  (ENTGET E1)
  409.       E1LST  (SUBST (CONS 10 (POLAR P2 (ANGLE P2 P1) 50))
  410.              (ASSOC 10 (REVERSE E1LST))
  411.              E1LST
  412.       )
  413.       E1LST  (vl-remove-if
  414.         (function
  415.           (LAMBDA (X)
  416.             (OR (= (CAR X) -1)
  417.           (= (CAR X) 330)
  418.           (= (CAR X) 5)
  419.           (= (CAR X) 410)
  420.             )
  421.           )
  422.         )
  423.         E1LST
  424.       )
  425.       )
  426.       (entmakeX E1LST)
  427.       (IF  (> N 1)
  428.         (PROGN
  429.     (SETQ ENTLST (ENTGET E1)
  430.           V90    (CDR (ASSOC 90 ENTLST))
  431.           ENTLST (vl-remove-if
  432.              (function
  433.          (LAMBDA (X) (= (CAR X) 210))
  434.              )
  435.              ENTLST
  436.            )
  437.           ENTLST (SUBST (CONS 90 (1+ V90))
  438.             (ASSOC 90 ENTLST)
  439.             ENTLST
  440.            )
  441.           LST    (LIST (CONS 10 P3) (LIST 210 0.0 0.0 1.0))
  442.     )
  443.     (ENTMOD (APPEND ENTLST LST))
  444.     (REPEAT  (1- N)
  445.       (VLA-OFFSET (VLAX-ENAME->VLA-OBJECT E1) (* I LROW))
  446.       (SETQ  ENTLST (ENTGET (ENTLAST))
  447.       ENTLST (vl-remove-if-not
  448.          (FUNCTION (LAMBDA (X) (= (CAR X) 10))
  449.          )
  450.          ENTLST
  451.              )
  452.       PP0    (CDR (NTH 0 (REVERSE ENTLST)))
  453.       PP1    (CDR (NTH 1 (REVERSE ENTLST)))
  454.       PP11   (POLAR PP1 (ANGLE P2 P1) 50)
  455.       )
  456.       (ENTDEL (ENTLAST))
  457.       (SETQ  ENTLST (ENTGET
  458.          (EVAL
  459.            (READ (STRCAT "E" (RTOS (1+ I) 2 0)))
  460.          )
  461.              )
  462.       ENTLST (SUBST (CONS 10 PP11)
  463.               (ASSOC 10 (REVERSE ENTLST))
  464.               ENTLST
  465.              )
  466.       )
  467.       (ENTMOD ENTLST)
  468.       (entmakeX (list '(0 . "ARC")
  469.           (CONS 62 YS)
  470.           (CONS 8 LAY)
  471.           (cons 10 PP1)
  472.           (cons 40 50)
  473.           (cons 50 ang2)
  474.           (cons 51 ang1)
  475.           )
  476.       )
  477.       (entmakeX
  478.         (list '(0 . "LWPOLYLINE")
  479.         '(100 . "AcDbEntity")
  480.         '(100 . "AcDbPolyline")
  481.         (cons 90 2)
  482.         (CONS 62 YS)
  483.         (CONS 8 LAY)
  484.         (CONS 43 XK)
  485.         (cons 10 PP1)
  486.         (cons 10 PP0)
  487.         )
  488.       )
  489.       (SET (READ (STRCAT "E" (RTOS (1+ I) 2 0)))
  490.            (ENTLAST)
  491.       )
  492.       (SETQ I (1+ I))
  493.     )

  494.         )
  495.       )
  496.       (ENTDEL E1)
  497.       (SETQ E1 (entmakeX
  498.            (list '(0 . "LWPOLYLINE")
  499.            '(100 . "AcDbEntity")
  500.            '(100 . "AcDbPolyline")
  501.            (cons 90 2)
  502.            (CONS 62 YS)
  503.            (CONS 8 LAY)
  504.            (CONS 43 XK)
  505.            (cons 10 P2)
  506.            (cons 10 P3)
  507.            )
  508.          )
  509.       )
  510.       (entmakeX (list '(0 . "ARC")
  511.           (CONS 62 YS)
  512.           (CONS 8 LAY)
  513.           (cons 10 P2)
  514.           (cons 40 50)
  515.           (cons 50 ang2)
  516.           (cons 51 ang1)
  517.           )
  518.       )
  519.       (SETQ P1 P2
  520.       P2 P3
  521.       )
  522.      )
  523.    )
  524.        )
  525.       )
  526.     )
  527.   )
  528. )
  529. (defun MID (po1 po2)
  530.     (setq po (MAPCAR '(lambda (X Y) (* (+ X Y) 0.5)) po1 po2))
  531.   )
  532. (DEFUN ARC3(P1 P2 P3 /  PT R ANG1 ANG2 E1 E2 E3 );;;;;;三点画弧
  533.   (SETVAR "cmdecho" 0)
  534.   (IF (AND (> (DISTANCE P1 P2) (DISTANCE P1 P3))
  535.      (> (DISTANCE P1 P2) (DISTANCE P2 P3))
  536.       )
  537.     (SETQ PT P1
  538.     P1 P3
  539.     P3 PT
  540.     )
  541.   )  
  542.   (SETQ  PT   (INTERS (POLAR (MID P1 P2)
  543.           (+ (* 0.5 PI) (ANGLE P1 P2))
  544.           (DISTANCE P1 P2)
  545.          )
  546.          (MID P1 P2)
  547.          (POLAR (MID P3 P2)
  548.           (+ (* 0.5 PI) (ANGLE P3 P2))
  549.           (DISTANCE P3 P2)
  550.          )
  551.          (MID P2 P3)
  552.          NIL
  553.        )
  554.   R    (DISTANCE PT P1)
  555.   ANG1 (ANGLE PT P1)
  556.   ANG2 (ANGLE PT P3)
  557.   E1   (ENTMAKEX (LIST '(0 . "ARC")
  558.            (CONS 10 PT)
  559.            (CONS 40 R)
  560.            (CONS 50 ANG1)
  561.            (CONS 51 ANG2)
  562.            )
  563.        )
  564.   E2   (ENTMAKEX (LIST '(0 . "ARC")
  565.            (CONS 10 PT)
  566.            (CONS 40 R)
  567.            (CONS 50 ANG2)
  568.            (CONS 51 ANG1)
  569.            )
  570.        )
  571.   E3   (ENTMAKEX (LIST '(0 . "LINE")
  572.            (CONS 10 PT)
  573.            (CONS 11 (POLAR P2 (ANGLE PT P2) R))
  574.            )
  575.        )
  576.   )
  577.   (IF (> (vlax-safearray-get-u-bound
  578.      (vlax-variant-value
  579.        (vla-intersectwith
  580.          (vlax-ename->vla-object e1)
  581.          (vlax-ename->vla-object e3)
  582.          acExtendNonE
  583.        )
  584.      )
  585.      1
  586.    )
  587.    0
  588.       )
  589.     (PROGN (ENTDEL E2) (ENTDEL E3) E1)
  590.     (PROGN (ENTDEL E1) (ENTDEL E3) E2)
  591.   )
  592.   )
  593. (defun  DXDG ( DN YS / PX PY)
  594.    (SETVAR "OSMODE" 0)
  595.    (setvar "cmdecho" 0)
  596.    (SETQ PX (GETPOINT "\n断管插入点"))
  597.    (IF (= PX NIL)(progn (vl-exit-with-value 0)))
  598.    (SETQ PY (GETPOINT PX (STRCAT "\n断管方向")))
  599.    (IF (= PY NIL)(progn (vl-exit-with-value 0)))
  600.    (DXDG1 DN YS PX PY)
  601. )
  602. (DEFUN DXDG1 (DN YS PX PY /  P1 P2 P3 P3_1   E1 E2)
  603.   (vl-load-com)
  604.   (SETQ P1(POLAR PX(+ (ANGLE PX PY) (* 0.5 PI)) (* 0.5 DN))
  605.   P2(POLAR PX(+ (ANGLE PX PY) (* 1.5 PI)) (* 0.5 DN)))
  606.   (SETQ P3 (MID P1 P2))
  607.   (SETQ P3_1 (POLAR (MID P1 P3) (- (ANGLE P1 P2) (* 0.5 PI)) (* 0.1 DN)))
  608.   (ARC3 P1 P3_1 P3)
  609.   (SETQ E1 (ENTLAST))
  610.   (vla-PUt-Color (vlax-ename->vla-object E1)YS)
  611.   (setq E2 (vla-copy(vlax-ename->vla-object E1)))
  612.   (vla-Rotate  E2 (vlax-3D-point PX)PI)
  613.   (VL-CMDF "GROUP" "C" "*" "*"E1 (vlax-vla-object->ename E2) "")
  614.   (PRINC)
  615. )


  616. (DEFUN WTDG ( YS LAY / PX PY )
  617.   (SETQ PX (GETPOINT "\n弯头插入点"))
  618.   (IF (= PX NIL)(progn (vl-exit-with-value 0)))
  619.   (SETQ PY (GETPOINT PX (STRCAT "\n高管方向")))
  620.   (IF (= PY NIL)(progn (vl-exit-with-value 0)))
  621.   (WTDG1 YS LAY PX PY)
  622. )
  623. (DEFUN WTDG1 ( YS LAY  PX PY / ANG1 ANG2)
  624.   (SETQ  ANG1 (+ (ANGLE PY PX) (* 0.75 PI))
  625.   ANG2 (+ (ANGLE PY PX) (* 1.25 PI))
  626.   )
  627.   (entmakeX (list '(0 . "ARC")
  628.       (CONS 62 YS)
  629.       (CONS 8 LAY)
  630.       (cons 10 PX)
  631.       (cons 40 50)
  632.       (cons 50 ang2)
  633.       (cons 51 ang1)
  634.       )
  635.   )
  636. )



  637. (DEFUN STDG ( YS LAY / PX PY ANG1 ANG2 ANG3 ANG4 E1 E2)
  638.   (SETQ PX (GETPOINT "\n弯头插入点"))
  639.   (IF (= PX NIL)(progn (vl-exit-with-value 0)))
  640.   (SETQ PY (GETPOINT PX (STRCAT "\n高管方向")))
  641.   (IF (= PY NIL)(progn (vl-exit-with-value 0)))
  642.   (SETQ  ANG1 (+ (ANGLE PY PX) (* 0.75 PI))
  643.   ANG2 (+ (ANGLE PY PX) (* 0.25 PI))
  644.   ANG3 (+ (ANGLE PY PX) (* 1.75 PI))
  645.   ANG4 (+ (ANGLE PY PX) (* 1.25 PI))
  646.   
  647.   )
  648.   (SETQ  E1 (entmakeX (list '(0 . "ARC")
  649.          (CONS 62 YS)
  650.          (CONS 8 LAY)
  651.          (cons 10 PX)
  652.          (cons 40 50)
  653.          (cons 50 ang2)
  654.          (cons 51 ang1)
  655.          )
  656.      )
  657.   E2 (entmakeX (list '(0 . "ARC")
  658.          (CONS 62 YS)
  659.          (CONS 8 LAY)
  660.          (cons 10 PX)
  661.          (cons 40 50)
  662.          (cons 50 ang4)
  663.          (cons 51 ang3)
  664.          )
  665.      )
  666.   )
  667.   (VL-CMDF "GROUP" "C" "*" "*"E1 E2 "")
  668. )

  669. (DEFUN DXGDSZ1 (/ LPN DNLST LAY1 LAYS LAYL DCL_ID STD COLOR DN LAY CZ PN XK YS KEYMODE N)
  670.   (IF (NULL VLAX-DUMP-OBJECT)
  671.     (VL-LOAD-COM)
  672.   )
  673.   (SETQ  LPN   (LIST "0.25"   "0.6"    "1.0"    "1.6"  "2.5"
  674.         "4.0"    "6.3"    "10.0"   "16.0"  "25.0"
  675.         "40.0"
  676.        )
  677.   DNLST (MAPCAR '(lambda (x) (RTOS X 2 0))
  678.           (LIST 15   20   25   32  40   50    65   80
  679.           90   100  125  150  200  250  300  350
  680.           400   450  500  550  600  650  700  750
  681.           800   850  900  950  1000 1100 1200
  682.          )
  683.         )
  684.   )
  685.   (setq  lays (vla-get-layers
  686.          (vla-get-activedocument (vlax-get-acad-object))
  687.        )
  688.   LAYL NIL
  689.   KEYMODE  "单线管道"
  690.   )
  691.   (MAPCAR (function (lambda (KEY DATA) (set (read key) DATA)))
  692.     (LIST "DN" "LAY" "CZ" "PN" "XK" "YS""N")
  693.     (VLAX-LDATA-GET "KEYMODE" KEYMODE)
  694.   )
  695.   (VLAX-FOR LAY  LAYS
  696.     (SETQ LAYL (CONS (VLA-GET-NAME LAY) LAYL))
  697.   )
  698.   (setq LAY1 (REVERSE LAYL))

  699. ;;;  (setq dcl_id (load_dialog (make-dclgd)))
  700.   (setq  dcl_id
  701.    (load_dialog
  702.      "E:\\维尔利工作-2022\\CAD模版\\cad坐标插件\\LY插件缓存文件\\单线管道绘制.DCL"
  703.    )
  704.   )
  705.   (if (< dcl_id 0)
  706.     (vl-exit-with-value 0)
  707.   )
  708.   (setq std 2)
  709.   (while (> std 1)
  710.     (new_dialog "DXGD" dcl_id)
  711.     (START_LIST "YL1")
  712.     (MAPCAR 'ADD_LIST LPN)
  713.     (END_LIST)
  714.     (START_LIST "DN1")
  715.     (MAPCAR 'ADD_LIST DNLST)
  716.     (END_LIST)
  717.     (START_LIST "LAY1")
  718.     (MAPCAR 'ADD_LIST LAY1)
  719.     (END_LIST)
  720.     (set_tile "CZ1" CZ)
  721.     (set_tile "N1" (RTOS N 2 0))
  722.     (set_tile "XK1" (RTOS XK 2 0))
  723.     (set_tile "YS1" (RTOS YS 2 0))
  724.     (set_tile "YL1" (RTOS (vl-position PN LPN) 2 0))
  725.     (set_tile "DN1"(RTOS (vl-position (RTOS DN 2 0) DNLST) 2 0))
  726.     (set_tile "LAY1" (RTOS (vl-position LAY LAY1) 2 0))
  727.     (action_tile "cancel" "(done_dialog 0)")
  728.     (action_tile "accept" "(DXGDSZ2 LPN DNLST LAY1)(done_dialog 1) ")
  729.     (action_tile "XYS" "(DXGDSZ3) ")
  730.     (setq STD (start_dialog))
  731.     (unload_dialog dcl_id)
  732.   )
  733. )
  734. (DEFUN DXGDSZ3 ( / COLOR)
  735.   (setq color (acad_colordlg 3))
  736.   (IF color
  737.     (set_tile "YS1" (RTOS COLOR 2 0))
  738.   )
  739. )
  740. (DEFUN DXGDSZ2 ( LPN DNLST LAY1 / D11 LAY CZ PN XK YS KEYMODE N)
  741.   (SETQ CZ (get_tile "CZ1"))
  742.   (SETQ PN (nth (atoi (Get_tile "YL1")) LPN))
  743.   (SETQ DN (ATOI (nth (atoi (Get_tile "DN1")) DNLST)))
  744.   (SETQ LAY (nth (atoi (Get_tile "LAY1")) LAY1))
  745.   (SETQ XK (ATOI (get_tile "XK1")))
  746.   (SETQ N (ATOI (get_tile "N1")))
  747.   (SETQ YS (ATOI (get_tile "YS1"))
  748.   KEYMODE  "单线管道")
  749.   (VLAX-LDATA-PUT "KEYMODE" KEYMODE(LIST DN LAY CZ PN XK YS N) )
  750. )



修改了arc3bug。2023.01.31

本帖子中包含更多资源

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

x

评分

参与人数 5明经币 +5 收起 理由
cghdy + 1
magicheno + 1 很给力!
USER2128 + 1 很给力!
panliang9 + 1 赞一个!
自贡黄明儒 + 1 很给力!

查看全部评分

发表于 2023-2-16 23:31:37 | 显示全部楼层
     "E:\\维尔利工作-2022\\CAD模版\\cad坐标<a href="http://bbs.mjtd.com/forum-6-1.html" target="_blank" class="relatedlink">插件</a>\\LY插件缓存文件\\单线管道绘制.DCL"
   )

麻烦问下,这是什么,为什么S设置不了,谢谢
 楼主| 发表于 2023-2-17 08:32:51 | 显示全部楼层
aggdqty 发表于 2023-2-16 23:31
"E:\\维尔利工作-2022\\CAD模版\\cad坐标插件\\LY插件缓存文件\\单线管道绘制.DCL"
   )

里面有dcl了,那个地址被我注释掉了,不要改代码应该就可以直接用
 楼主| 发表于 2023-2-17 08:35:12 | 显示全部楼层
aggdqty 发表于 2023-2-16 23:31
"E:\\维尔利工作-2022\\CAD模版\\cad坐标插件\\LY插件缓存文件\\单线管道绘制.DCL"
   )

我上传了DCL文件,你下载试试吧
发表于 2023-1-30 17:19:07 | 显示全部楼层

很不用的工具lisp,谢谢楼主的分享!
不过,可否请楼主也分享有“统计工具”的呢?
可以供下载使用。
因为绘画管线,最后是希望可以进行“数量计算”
发表于 2023-1-30 21:41:51 | 显示全部楼层
谢谢楼主分享
发表于 2023-1-31 09:47:33 | 显示全部楼层
谢谢楼主分享
发表于 2023-1-31 15:20:43 | 显示全部楼层
感谢大佬分享
发表于 2023-2-3 09:31:48 | 显示全部楼层
非常不错的代码,谢谢楼主分享啊
发表于 2023-2-3 22:44:43 | 显示全部楼层
很实用的程序
发表于 2023-2-6 11:29:42 | 显示全部楼层
先试用看看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 01:51 , Processed in 0.205450 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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