设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

123下一页
返回列表
查看: 3356|回复: 36

[曲线] 电气回路连线/创建/统计/增删

[复制链接]

签到天数: 936 天

连续签到: 2 天

[LV.10]以坛为家III

点击这里给我发消息

已领礼包: 1255个

财富等级: 财源广进

发表于 2014-11-20 17:32:25 | 显示全部楼层 |阅读模式

  • 插件名称 : 回路连线
  • 作  者 : st788796
  • 运行环境 :XDRX API OpenDCL 
  • 发布时间 :2014-12-01
  • 命令名称 :XDTB_Drawcircuit
  • 插件介绍 :回路连线
  • 备  注 : (点击图片可以放大)
    XDTB_Drawcircuit 绘制
    XDTB_CreateCircuit 现有线创建
    XDTB_CalCircuit 统计制表
(点击图片可以放大)

晓东温馨提示 1、运行环境为 晓东工具箱XDRX API 的插件,请下载 晓东工具箱 或者下载 XDRX API开发环境 一键安装
2、在ACAD中如何加载插件,请看 论坛插件使用方法
3、如果您有要求需要定制插件,请到 编程申请 论坛发帖求助

插件详细内容

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
本帖最后由 st788796 于 2014-12-2 17:49 编辑

  1. (defun _Excel:getFromFile (fn / lst)
  2.   (setq        lst (xd::excel:getFromFile (findfile fn) 0)
  3.         lst (mapcar '(lambda (x)
  4.                        (mapcar '(lambda        (a)
  5.                                   (cadr a)
  6.                                 )
  7.                                x
  8.                        )
  9.                      )
  10.                     lst
  11.             )
  12.   )
  13.   (list        (mapcar 'car lst)
  14.         (mapcar 'cadr lst)
  15.         (mapcar 'caddr lst)
  16.         (mapcar 'cadddr lst)
  17.   )
  18. )
  19. ;;===================================================;
  20. ;;          对话框控制                               ;
  21. ;;===================================================;
  22. (defun _Circuit:Control        (/ strl)
  23.   (setq        strl
  24.          '("YWt6AyFCAAA5JLYRBuKT5TcSYjtq+IEPwsr3zfz9Nya4z3f/np4DX25f/DNeDxISP24/9In7Br0I"
  25.            "HO0+8j78Nni8+/5ybKKevmxaSA8eT2KeuO999AI6/O5lXujmiRT4l9Sp2LnTl/Kl2LmU54DVxNXV"
  26.            "lcORKwsLB6OCuwe6ydJAYjtBeJZFfJ7FYl7pCVbVxnQLVj1JVK4/wQtWP0XULvAwpNU6addkpJXe"
  27.            "6jTLKTUFo4opMNRkQwo4WRMjzzWzDfeb2jSXliyE090hUM/ktJIvWyiuK8biRKRV2eJsNFHdoRBU"
  28.            "2eSwl9hVKq4Ra4zP5HWb9NDYcyUeO+7/hvkR1X+9Zrte4xGD85IGOPoxzCBthOauufvgaYR531ly"
  29.            "w8dtybwQqr3OFQxmM2a8Q8qLHeLICETcYbmXwNLpO+exd+NjT4vhXAEslhHOj6Go9kn1q/wyFmEV"
  30.            "NEvhhII2qM8Y7xuaEcqNQR/DVBzggc/j0Yr5PAFaink8gVuULRpmTo2ifWngQQmEje2oyThE0pMI"
  31.            "R7PK2WL/FQB72UZiX8X/ZMHj5OGjrGQ2Ii3rH2NvBE4vCJopEO0f74H2rnVKDXjSulNLpyujsESl"
  32.            "1iS4EpU2yQvno3ICzr1yPbhHB/MWO+rIQMTff4T1nFCEkEuyC/SxtWmYFciLVdKRzUsppsQgln3I"
  33.            "QLUE4U6hAN9l+8ApFjqyheoYwz/K/RiYad/nB2PZxufHUjvNGhDkhNOLzZfnPZdO8xQUs0oFXdgX"
  34.            "oD7OM41oFeHXLNiYZNIfy60flIMalnCruBqUQm+GzDreAjGawV2KxTzBU8qhbx0k6gFADxFPA69A"
  35.            "IMuLUZyC4e8dlhwPgHvFQFRBd3TMbbZqUNDfjHLib/Ivz7D0PoDADmnBToSq0LUH0NX4qwRQGflW"
  36.            "Kb1SYVgYxXoYO9IBbBDRH8lrWAgZnn0IYE5V/vi7JDAPvdyiMc3JvxeIuGgyx+cjl0rm43365acH"
  37.            "Nt7lg0gfiJxaGKF5rZL9NsGnvXaZYJ9sJlb5Cb3cvDFS1J66nPDwoqCbbnPHcwpSCHVSyFu/HHJY"
  38.            "aIt2z3ZSaKnODL3cjCxxbDBCQAMORx5PdW31aR4cD3K/YVr6JlJs9RUnxx8vm1loOZ66nIvoGbmA"
  39.            "cSaicG31bXbPdlJoqc8MvdykMVLkz77NO63ulc07Ls6GbFho2R8cT38JUmD69ztlPFJ89Tvq62Vo"
  40.            "SwAcL31ZaBEIKMlSeVIsk1Ng+/e7o3bPdlJo+9KiztaLbXXgiewmYkKKg7IMvpx15iaOVXNj9TfG"
  41.            "HU99bXVgwPgmem71IqSnvtSq/zvFjNgY8ox1obvB3NQeE6fQu/klGwgAaQIKD7Pbq+KHZy8QQ4zy"
  42.            "DEtpUfuXnC+kzUi7oLFZ8IE03tRf3iBbK/eCPJ/cRUtp8MZdTXxt58OOf+dqIOtXugX7NdDDunZi"
  43.            "aps1WqhlxK4Tk/yQwM/rctO0BYiuZ5PaBDcLvwQGd96dVQx6uBB5Ch1m2WRRcMQl+o3rgIn090E6"
  44.            "IdsQO/2IX6jXwF+nni1BK1XQ1T/QnMT6AvnG0RruoVJeV2+EWA+DGj++e4Sh2aLfEf53g1YC/sAw"
  45.            "qqlViszhMqhR5D8f1WXqxAW53tJZdgcH776skb6sX5QCNBZnBsTtetwp+zANZs8EspVbvPSUkOIf"
  46.            "G/ZSTzYTAuokQDuF+MiPFuVK+I/ZnhFmKR3JTvJZc52Ujzh1nZSPGfe9BlxaIrBXsO6+iJVZxYsv"
  47.            "jnM9vPRzd4JCnRk2Jvse+vpH5l8/Q0CHZmyqcjd0X59b5l/fdjVlbKRucXeSxikMtPPwO5bDSkRm"
  48.            "2E+89g2QGrO05IWORLPZf9voykSoawADTGOtCHU8nB8HED+6oxerNBWzF92OvxebYrpIf8t5WZgP"
  49.            "Phyk1F7oXOMG/mBdYN1IY3OEkjuEBd+7MZzXID3lui1VaX1G9yl1rZ/r/QXmui1wkUD36cX5HJxe"
  50.            "RJaFMKRYB2vJ+RfDyl6bf99Z318Ka9lGbrRiWf44wrOEQHNS9SehR1JOEo6eThQmnp3SEWrYBVYJ"
  51.            "JzyJFh1juDNdEFgOp7K0p53yLibm9otG9XnYcV9OjwQFfBhpMh7gPnYyHv+nvLR/8ru+8ruB1wpm"
  52.            "PSDOR/5u5QbDQx8NQTISRG8cbSYS0BibvljZLb9M0GCseSicVYdHenXk3sPsET128/r4QYF+HABv"
  53.            "7A=="
  54.           )
  55.   )
  56.   (setq        *allPres*     (acad_strlsort
  57.                         (vl-remove-if
  58.                           '(lambda (x) (= x "cPrefix"))
  59.                           (mapcar 'car (vlax-ldata-list "XD_Circuit_Dict"))
  60.                         )
  61.                       )
  62.         *circuitdict* (_excel:getfromfile "circuitdict.xls")
  63.   )
  64.   (dcl_project_import strl)
  65.   (dcl_form_show huilu_form1)
  66. )
  67. (defun _Odcl:AddList (ctrl lst default /)
  68.   (dcl_ComboBox_AddList ctrl lst)
  69.   (dcl_combobox_setcursel ctrl default)
  70. )
  71. (defun c:huilu_Form1_OnInitialize (/ lst)
  72.   (dcl_combobox_addlist
  73.     huilu_form1_type
  74.     (mapcar 'vl-princ-to-string
  75.             (cdr (assoc "类型" *circuitdict*))
  76.     )
  77.   )
  78.   (dcl_combobox_setcursel huilu_form1_type 0)
  79.   (dcl_combobox_addlist
  80.     huilu_form1_power
  81.     (mapcar 'vl-princ-to-string
  82.             (cdr (assoc "功率" *circuitdict*))
  83.     )
  84.   )
  85.   (dcl_combobox_setcursel huilu_form1_power 0)
  86.   (dcl_combobox_addlist
  87.     huilu_form1_position
  88.     (mapcar 'vl-princ-to-string
  89.             (cdr (assoc "位置" *circuitdict*))
  90.     )
  91.   )
  92.   (dcl_combobox_setcursel huilu_form1_position 0)
  93.   (dcl_combobox_addlist
  94.     huilu_form1_control
  95.     (mapcar 'vl-princ-to-string
  96.             (cdr (assoc "控制" *circuitdict*))
  97.     )
  98.   )
  99.   (dcl_combobox_setcursel huilu_form1_control 0)
  100.   (apply 'dcl_control_setpos
  101.          (cons huilu_form1 (last (xdrx_document_pixelbox)))
  102.   )
  103.   (_Odcl:Addlist
  104.     huilu_Form1_allPre
  105.     *allpres*
  106.     (vl-position
  107.       (vlax-ldata-get "XD_Circuit_Dict" "cPrefix")
  108.       *allPres*
  109.     )
  110.   )
  111.   (dcl_control_settext
  112.     huilu_form1_numCur
  113.     (itoa (vlax-ldata-get
  114.             "XD_Circuit_Dict"
  115.             (vlax-ldata-get "XD_Circuit_Dict" "cPrefix")
  116.           )
  117.     )
  118.   )
  119.   (dcl_control_settext
  120.     huilu_form1_strPre
  121.     (vlax-ldata-get "XD_Circuit_Dict" "cPrefix")
  122.   )
  123.   (dcl_combobox_setcursel
  124.     huilu_form1_layer
  125.     (vl-position
  126.       (getvar "clayer")
  127.       (mapcar 'car (xd::object:get "layer"))
  128.     )
  129.   )
  130.   (dcl_Control_SetJustification huilu_Form1_height 1)
  131.   (dcl_control_settext huilu_form1_height "2.5")
  132. )
  133. (defun c:huilu_Form1_strPre_OnEditChanged (NewValue /)
  134.   (if (not (member newvalue *allpres*))
  135.     (progn
  136.       (setq *allPres* (acad_strlsort (cons newvalue *allpres*)))
  137.       (vlax-ldata-put "XD_Circuit_Dict" newvalue 1)
  138.       (_Odcl:Addlist
  139.         huilu_Form1_allPre
  140.         *allpres*
  141.         (vl-position
  142.           (vlax-ldata-get "XD_Circuit_Dict" "cPrefix")
  143.           *allPres*
  144.         )
  145.       )
  146.       (dcl_control_settext huilu_form1_numCur "1")
  147.       (vlax-ldata-put "XD_Circuit_Dict" "cPrefix" newvalue)
  148.     )
  149.   )
  150. )
  151. (defun c:huilu_Form1_numCur_OnEditChanged (NewValue /)
  152.   (vlax-ldata-put
  153.     "XD_Circuit_Dict"
  154.     (dcl_control_gettext huilu_form1_strPre)
  155.     (atoi newvalue)
  156.   )
  157. )
  158. (defun c:huilu_Form1_allPre_OnSelChanged (ItemIndexOrCount Value /)
  159.   (dcl_control_settext huilu_form1_strPre value)
  160.   (dcl_control_settext
  161.     huilu_form1_numCur
  162.     (vlax-ldata-get "XD_Circuit_Dict" value)
  163.   )
  164.   (vlax-ldata-put "XD_Circuit_Dict" "cPrefix" value)
  165. )
  166. ;;===================================================;
  167. ;;            建立回路数据                           ;
  168. ;;===================================================;
  169. (defun _Circuit:Create (txt blk        pl pl1 / ctype cposition cpower        ccontrol
  170.                         lyr)
  171.   (setq        ctype          (nth (dcl_combobox_getcursel huilu_form1_type)
  172.                        (cdr (assoc "类型" *circuitdict*))
  173.                   )
  174.         cposition (nth
  175.                     (dcl_combobox_getcursel huilu_form1_position)
  176.                     (cdr (assoc "位置" *circuitdict*))
  177.                   )
  178.         cpower          (nth (dcl_combobox_getcursel huilu_form1_power)
  179.                        (cdr (assoc "功率" *circuitdict*))
  180.                   )
  181.         ccontrol  (nth (dcl_combobox_getcursel huilu_form1_control)
  182.                        (cdr (assoc "控制" *circuitdict*))
  183.                   )
  184.   )
  185.   (vlax-ldata-put txt "Type" ctype)
  186.   (vlax-ldata-put txt "Power" cpower)
  187.   (vlax-ldata-put txt "Control" ccontrol)
  188.   (vlax-ldata-put txt "Position" cposition)
  189.   (if (/= (setq
  190.             lyr        (nth (dcl_combobox_getcursel huilu_form1_layer)
  191.                      (dcl_control_getlist huilu_form1_layer)
  192.                 )
  193.           )
  194.           (getvar "clayer")
  195.       )
  196.     (xdrx_entity_setlayer txt lyr)
  197.   )
  198.   (if (not blk)
  199.     (setq blk
  200.            (car        (xdrx_entsel
  201.                   "\n拾取图块或文字: "
  202.                   '((0 . "insert,*text"))
  203.                 )
  204.            )
  205.     )
  206.   )
  207.   (if (eq (type blk) 'ENAME)
  208.     (if        (= (xdrx_getpropertyvalue blk "IsA")
  209.            "AcDbBlockReference"
  210.         )
  211.       (setq blk (car (xdrx_getpropertyvalue blk "BlockTableRecord")))
  212.       (setq blk (xdrx_getpropertyvalue blk "textString"))
  213.     )
  214.   )
  215.   (if blk
  216.     (xdrx_xdata_setbyproperty txt "XDCircuit" "String" blk)
  217.   )

  218.   (if (= (dcl_control_getvalue huilu_form1_group) 1)
  219.     (if        pl1
  220.       (xdrx_group_make "*" pl txt pl1)
  221.       (xdrx_group_make "*" pl txt)
  222.     )
  223.   )
  224.   (vlax-ldata-put
  225.     txt
  226.     "Circuit"
  227.     (xdrx_getpropertyvalue pl "Handle")
  228.   )
  229.   (vlax-ldata-put
  230.     "XD_Circuit_Dict"
  231.     (dcl_control_gettext huilu_form1_strPre)
  232.     (1+ (atoi (dcl_control_gettext huilu_form1_numCur)))
  233.   )
  234.   (dcl_control_settext
  235.     huilu_form1_numCur
  236.     (itoa (vlax-ldata-get
  237.             "xd_circuit_dict"
  238.             (dcl_control_gettext huilu_form1_strPre)
  239.           )
  240.     )
  241.   )
  242. )
  243. ;;===================================================;
  244. ;;              初始数据                             ;
  245. ;;===================================================;
  246. (defun _Circuit:CheckDict (/ tf str num)
  247.   (if (and (not (setq tf (vlax-ldata-list "XD_Circuit_Dict")))
  248.            (progn
  249.              (princ "\n**当前图形未包含初始数据**")
  250.              t
  251.            )
  252.            (setq str (getstring "\n前缀: "))
  253.            (setq num (getint "\n编号: "))
  254.       )
  255.     (progn
  256.       (vlax-ldata-put "XD_Circuit_Dict" str num)
  257.       (vlax-ldata-put "XD_Circuit_Dict" "cPrefix" str)
  258.       (setq tf t)
  259.     )
  260.   )
  261.   tf
  262. )
  263. ;;===================================================;
  264. ;;              绘制连接                             ;
  265. ;;===================================================;
  266. (defun c:XDTB_DrawCircuit (/          myerr         olderr        tf     str    num
  267.                            maxnums         cPrefix       p      pts
  268.                            p          d         pl        pl1    p1     str
  269.                            tf          strl         tf1        tf3    tf2    txt
  270.                            blklst blk
  271.                           )
  272.   (defun myerr (msg)
  273.     (princ "\n*cancel*")
  274.     (setq *error* olderr)
  275.     (if        (dcl_form_isactive huilu_form1)
  276.       (dcl_form_close huilu_form1)
  277.     )
  278.     (xdrx_sysvar_pop)
  279.     (princ)
  280.   )
  281.   (if (_Circuit:CheckDict)
  282.     (progn
  283.       (setq olderr  *error*
  284.             *error* myerr
  285.             tf1            t
  286.       )
  287.       (_Circuit:Control)
  288.       (xdrx_sysvar_push '("osmode" 64))
  289.       (while (and tf1
  290.                   (dcl_form_isactive huilu_form1)
  291.              )
  292.         (setq tf2 t
  293.               pts nil
  294.               pl nil
  295.               blklst nil
  296.         )
  297.         (while
  298.           (and tf2
  299.                (progn
  300.                  (initget 128 "E U")
  301.                  (setq
  302.                    p (if pts
  303.                        (getpoint (car pts) "\r下一点[回退(U)/退出(E)]: ")
  304.                        (getpoint "\r起点[退出(E)]: ")
  305.                      )
  306.                  )
  307.                )
  308.                (dcl_form_isactive huilu_form1)
  309.           )
  310.            (if (listp p)
  311.              (progn
  312.                (setq pts (cons p pts))
  313.                (if (= (length pts) 2)
  314.                  (progn
  315.                    (setq p (getpoint (apply 'xdrx_line_midp pts) "\n弦高: ")
  316.                          d (* 2
  317.                               (xdrx_point_dist2line p (cadr pts) (car pts))
  318.                            )
  319.                    )
  320.                    (setq pl (xdrx_polyline_make (cadr pts) (car pts)))
  321.                    (xdrx_polyline_setbulgeat
  322.                      pl
  323.                      0
  324.                      (/ d (apply 'distance pts))
  325.                    )
  326.                  )
  327.                )
  328.                (if (setq ss (xdrx_pickset_getatpoint
  329.                               (car pts)
  330.                               '((0 . "insert"))
  331.                             )
  332.                    )
  333.                  (setq blklst (mapcar '(lambda (x)
  334.                                          (car (xdrx_getpropertyvalue
  335.                                                 x
  336.                                                 "BlockTableRecord"
  337.                                               )
  338.                                          )
  339.                                        )
  340.                                       (xdrx_pickset->ents ss)
  341.                               )
  342.                  )
  343.                )
  344.                (if (and pl (> (length pts) 2))
  345.                  (progn        (setq n (xdrx_polyline_numverts pl))
  346.                         (xdrx_polyline_setpointat pl (1- n) (car pts))
  347.                         (xdrx_polyline_addvertexat pl (1- n) (cadr pts))
  348.                         (xdrx_polyline_setbulgeat
  349.                           pl
  350.                           (- n 2)
  351.                           (/ d (distance (cadr pts) (caddr pts)))
  352.                         )
  353.                         (xdrx_polyline_setbulgeat
  354.                           pl
  355.                           (1- n)
  356.                           (/ d (distance (car pts) (cadr pts)))
  357.                         )
  358.                  )
  359.                )
  360.                (setq tf3 t)
  361.              )
  362.              (cond
  363.                ((= p "E")
  364.                 (setq tf1 nil
  365.                       tf2 nil
  366.                 )
  367.                )
  368.                ((= p "U")
  369.                 (if pl
  370.                   (progn (xdrx_polyline_removevertexat
  371.                            pl
  372.                            (1- (xdrx_polyline_numverts pl))
  373.                          )
  374.                          (setq pts (cdr pts))
  375.                   )
  376.                 )
  377.                 (setq tf3 nil)
  378.                )
  379.                (t
  380.                 (setq tf2 nil
  381.                       tf3 t
  382.                 )
  383.                )
  384.              )
  385.            )
  386.         )
  387.         (if (and tf1
  388.                  tf3
  389.                  pl
  390.                  (dcl_form_isactive huilu_form1)
  391.                  (if (setq p (getpoint "\n引出点<回车端点>: "))
  392.                    (progn (setq tf nil) p)
  393.                    (setq tf t
  394.                          p  (xdrx_curve_getendpoint pl)
  395.                    )
  396.                  )
  397.                  (setq p1 (getpoint p "\n标注点: "))
  398.                  (dcl_form_isactive huilu_form1)
  399.                  (setq str
  400.                         (strcat
  401.                           (dcl_control_gettext huilu_form1_strPre)
  402.                           (xd::string:strpad
  403.                             (atoi (dcl_control_gettext huilu_form1_numCur))
  404.                             2
  405.                             "0"
  406.                             0
  407.                           )
  408.                         )
  409.                  )
  410.             )
  411.           (progn
  412.             (setq txt (xdrx_text_make
  413.                         p1
  414.                         (strcase str)
  415.                         (distof (dcl_control_gettext huilu_form1_height))
  416.                         0.0
  417.                       )
  418.                   pl1 (xdrx_polyline_make p p1)
  419.             )
  420.             (xdrx_polyline_setbulgeat pl1 0 0.5)
  421.             (if        (and blklst (apply '= blklst))
  422.               (setq blk (car blklst))
  423.             )
  424.             (_Circuit:Create txt blk pl pl1)
  425.           )
  426.         )
  427.       )
  428.       (dcl_form_close huilu_form1)
  429.       (xdrx_sysvar_pop)
  430.       (setq *error* olderr)
  431.     )
  432.   )
  433.   (princ)
  434. )
  435. ;;===================================================;
  436. ;;            处理旧图                               ;
  437. ;;===================================================;
  438. (defun c:xdtb_createCircuit (/              myerr    olderr        allpres
  439.                              circuitdict       strl        pl
  440.                              txt      blk
  441.                             )
  442.   (defun myerr (msg)
  443.     (princ "\n*cancel*")
  444.     (setq *error* olderr)
  445.     (if        (dcl_form_isactive huilu_form1)
  446.       (dcl_form_close huilu_form1)
  447.     )
  448.     (xdrx_sysvar_pop)
  449.     (princ)
  450.   )

  451.   (setq        olderr        *error*
  452.         *error*        myerr
  453.   )
  454.   (if (_Circuit:Control)
  455.     (while
  456.       (and
  457.         (setq pl
  458.                (car (xdrx_entsel
  459.                       "\n拾取回路Pline<退出>: "
  460.                       '((0 . "LWPOLYLINE"))
  461.                     )
  462.                )
  463.         )
  464.         (setq
  465.           txt
  466.            (car
  467.              (xdrx_entsel "\n拾取回路编号<退出>: " '((0 . "*TEXT")))
  468.            )
  469.         )
  470.         (progn
  471.           (setq        str    (xdrx_getpropertyvalue txt "textstring")
  472.                 curPre (xdrx_string_trimright str "0123456789")
  473.                 num    (substr str (1+ (strlen curpre)))
  474.           )
  475.           (distof num)
  476.           (princ (strcat "\n前缀 =" str " ; " "编号 = " num))
  477.           (setq num (atoi num))
  478.           (if (= (xdrx_yesorno "\n接受") 1)
  479.             t
  480.             (and (setq str (getstring "\n前缀: "))
  481.                  (setq num (getint "\n编号: "))
  482.             )
  483.           )
  484.         )
  485.         (setq blk
  486.                (car
  487.                  (xdrx_entsel
  488.                    "\n拾取图块或文字<退出>: "
  489.                    '((0 . "INSERT,*TEXT"))
  490.                  )
  491.                )
  492.         )
  493.         (dcl_form_isactive huilu_form1)
  494.       )
  495.        (if (not (member str *allPres*))
  496.          (progn
  497.            (setq *allPres* (acad_strlsort (cons str *allpres*)))
  498.            (vlax-ldata-put "XD_Circuit_Dict" str num)
  499.            (_Odcl:Addlist
  500.              huilu_Form1_allPre
  501.              *allpres*
  502.              (vl-position
  503.                (vlax-ldata-get "XD_Circuit_Dict" "cPrefix")
  504.                *allPres*
  505.              )
  506.            )
  507.          )
  508.          (progn
  509.            (dcl_control_settext huilu_form1_strPre str)
  510.            (dcl_control_settext huilu_form1_numCur (itoa num))
  511.            (dcl_combobox_setcursel
  512.              huilu_form1_allPre
  513.              (vl-position str *allPres*)
  514.            )
  515.          )
  516.        )
  517.        (_Circuit:Create txt blk pl nil)
  518.     )
  519.   )
  520.   (dcl_form_close huilu_form1)
  521.   (xdrx_sysvar_pop)
  522.   (setq *error* olderr)
  523.   (princ)
  524. )
  525. ;;===================================================;
  526. ;;             统计回路                              ;
  527. ;;===================================================;
  528. (defun c:XDTB_CalCircuit (/ ss nl height)
  529.   (if (setq ss (ssget '((0 . "text") (-3 ("XDCircuit")))))
  530.     (progn
  531.       (setq
  532.         height (xdrx_getpropertyvalue (ssname ss 0) "height")
  533.         nl     (mapcar
  534.                  '(lambda (x / pl)
  535.                     (if        (setq pl (handent (vlax-ldata-get x "Circuit")))
  536.                       (list (xdrx_getpropertyvalue x "textstring")
  537.                             (vlax-ldata-get x "Power")
  538.                             (xdrx_xdata_get x "XDCircuit")
  539.                             (vlax-ldata-get x "Type")
  540.                             (vlax-ldata-get x "Power")
  541.                             (itoa (xdrx_getpropertyvalue pl "numVerts"))
  542.                             (* (vlax-ldata-get x "Power")
  543.                                (xdrx_getpropertyvalue pl "numVerts")
  544.                             )
  545.                             (vlax-ldata-get x "Position")
  546.                             " "
  547.                             " "
  548.                       )
  549.                     )
  550.                   )
  551.                  (xdrx_pickset->ents ss)
  552.                )
  553.         nl     (cons "统计表"
  554.                      (cons
  555.                        '("回路"           "控制"    "编号"    "类型"
  556.                          "功率"           "数量"    "总功率"  "位置"
  557.                          "备注"           " "
  558.                         )
  559.                        (vl-sort nl '(lambda (x1 x2) (< (car x1) (car x2))))
  560.                      )
  561.                )
  562.       )
  563.       (if (setq p (getpoint "\n插入点<回车显示>: "))
  564.         (xd::table:make
  565.           (reverse (cons '(" ") (reverse nl)))
  566.           p
  567.           (* 3 height)
  568.           height
  569.         )
  570.         (foreach x nl
  571.           (princ "\n")
  572.           (princ x)
  573.         )
  574.       )
  575.       (xd::excel:createToFile
  576.         (strcat        (getvar "dwgprefix")
  577.                 (vl-filename-base (getvar "dwgname"))
  578.                 ".xls"
  579.         )
  580.         (cdr nl)
  581.       ) ;_写出 excel 文件
  582.       (xdrx_system_shellexecute
  583.         (strcat        (getvar "dwgprefix")
  584.                 (vl-filename-base (getvar "dwgname"))
  585.                 ".xls"
  586.         )
  587.       )
  588.     )
  589.   )
  590.   (princ)
  591. )



上一篇:红箭头所指的蓝点为块的基点,如何让这些块能够自动基点间标注?
下一篇:图像矩形动态裁剪
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复
百度谷歌雅虎搜狗搜搜有道360奇虎

使用道具 举报

签到天数: 936 天

连续签到: 2 天

[LV.10]以坛为家III

点击这里给我发消息

已领礼包: 1255个

财富等级: 财源广进

 楼主| 发表于 2014-11-28 14:44:07 | 显示全部楼层
更新
将块名记录到文字的 xdata

点评

回路连线XDTB_DRAWCIRCUIT [attachimg]11800[/attachimg] [attachimg]11801[/attachimg] 增加减少回路点 XDTB_CIRCUITNODE [attachimg]11802[/attachimg] 统计数据。XDTB_CALCIRCUIT [attachimg]11804[  详情 回复 发表于 2014-12-2 21:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 936 天

连续签到: 2 天

[LV.10]以坛为家III

点击这里给我发消息

已领礼包: 1255个

财富等级: 财源广进

 楼主| 发表于 2014-11-28 20:43:16 | 显示全部楼层
更新,回路连线保存到 文字词典

点评

能支持自定义字典就好了,就是有的回路号可以预置几个进去,画的时候就自带上去,可以选,对了字体的高度是哪个参数。。是(getvar "textsize") 后边的0.0吗?  详情 回复 发表于 2014-11-29 00:07
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 112 天

连续签到: 2 天

[LV.6]常住居民II

发表于 2014-11-29 00:07:39 | 显示全部楼层
st788796 发表于 2014-11-28 20:43
更新,回路连线保存到 文字词典

能支持自定义字典就好了,就是有的回路号可以预置几个进去,画的时候就自带上去,可以选,对了字体的高度是哪个参数。。是(getvar "textsize")
                        后边的0.0吗?

点评

现在几乎是完美了,再加上我说的能自定义预置字典内容,回路字体大小可以设置的话,可以说是没有什么挑剔了,我会准备个完整的图纸在此贴将动画整理发布一下。。在此感谢st788796[/backcolor]老师的耐心梳理我  详情 回复 发表于 2014-11-29 00:29
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 112 天

连续签到: 2 天

[LV.6]常住居民II

发表于 2014-11-29 00:29:22 | 显示全部楼层
grs432 发表于 2014-11-29 00:07
能支持自定义字典就好了,就是有的回路号可以预置几个进去,画的时候就自带上去,可以选,对了字体的高度 ...

      现在几乎是完美了,再加上我说的能自定义预置字典内容,回路字体大小可以设置的话,可以说是没有什么挑剔了,我会准备个完整的图纸在此贴将动画整理发布一下。。在此感谢st788796老师的耐心梳理我对程序的调试意见,并给出了正确的程序执行方式,真的在工作上方便了好多呀!完成今天的成果,我真是无法用语言来表达对st788796老师的感激之情,再次感谢呀!!
         后期我个人会自己加强自己对lisp的学习,希望能自己读懂st788796老师所写的内容!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 936 天

连续签到: 2 天

[LV.10]以坛为家III

点击这里给我发消息

已领礼包: 1255个

财富等级: 财源广进

 楼主| 发表于 2014-12-2 17:04:47 | 显示全部楼层
2014.12.02 updata
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 920 天

连续签到: 3 天

[LV.10]以坛为家III

已领礼包: 39个

财富等级: 招财进宝

发表于 2014-12-2 17:20:08 | 显示全部楼层
赞一个,很成功的一次完善过程。程序最终也很牛。

点评

是的,,ST老师的思路很清析,可以说比我这个做这个专业的人都了解绘制的过程,特别是UI的页面制作,很漂亮。。赞1个。我也在学习,通过与ST老师沟通这个程序的过程,可以让我对lisp入门些。。  详情 回复 发表于 2014-12-2 17:36
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 112 天

连续签到: 2 天

[LV.6]常住居民II

发表于 2014-12-2 17:36:30 | 显示全部楼层
newer 发表于 2014-12-2 17:20
赞一个,很成功的一次完善过程。程序最终也很牛。

是的,,ST老师的思路很清析,可以说比我这个做这个专业的人都了解绘制的过程,特别是UI的页面制作,很漂亮。。赞1个。我也在学习,通过与ST老师沟通这个程序的过程,可以让我对lisp入门些。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 936 天

连续签到: 2 天

[LV.10]以坛为家III

点击这里给我发消息

已领礼包: 1255个

财富等级: 财源广进

 楼主| 发表于 2014-12-2 17:41:32 | 显示全部楼层
grs432 发表于 2014-12-2 17:36
是的,,ST老师的思路很清析,可以说比我这个做这个专业的人都了解绘制的过程,特别是UI的页面制作,很漂 ...

抽空做几个 动画 补到这个帖子吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 936 天

连续签到: 2 天

[LV.10]以坛为家III

点击这里给我发消息

已领礼包: 1255个

财富等级: 财源广进

 楼主| 发表于 2014-12-2 17:48:43 | 显示全部楼层
另外一个配套程序也转过来
  1. ;;对回路连线增删顶点
  2. (defun c:XDTB_CircuitNode (/               _removevertexat
  3.                            _addvertexat                   _pnt:toline
  4.                            e               tf           p
  5.                            key               pr
  6.                           )
  7.   (defun _pnt:toline (p p1 p2)
  8.     (last (trans (mapcar '- p p1) 0 (mapcar '- p2 p1)))
  9.   )
  10.   (defun _removevertexat (e p / n bulge p p1 p2 d)
  11.     (setq n (fix (xdrx_curve_getparamatpoint e p)))
  12.     (if        (or (zerop n) (= n (1- (xdrx_polyline_numverts e))))
  13.       (xdrx_polyline_removevertexat e n)
  14.       (progn
  15.         (setq bulge (xdrx_polyline_getbulgeat e n)
  16.               p            (xdrx_curve_getpointatparam e (+ n 0.5))
  17.               p1    (xdrx_polyline_getpointat e (1- n))
  18.               p2    (xdrx_polyline_getpointat e (1+ n))
  19.               d            (distance
  20.                       p
  21.                       (xdrx_line_midp
  22.                         (xdrx_polyline_getpointat e n)
  23.                         p2
  24.                       )
  25.                     )
  26.         )
  27.         (xdrx_polyline_removevertexat e n)
  28.         (xdrx_polyline_setbulgeat
  29.           e
  30.           (1- n)
  31.           (if (minusp bulge)
  32.             (- (/ (* 2.0 d) (distance p1 p2)))
  33.             (/ (* 2.0 d) (distance p1 p2))
  34.           )
  35.         )
  36.       )
  37.     )
  38.   )
  39.   (defun _addvertexat (e p / n p1 p2 pm d bulge p0 tf1 tmp tf)
  40.     (setq p0 (xdrx_curve_getclosestpoint e p)
  41.           n  (fix (xdrx_curve_getparamatpoint e p0))
  42.     )
  43.     (if        (setq tf1 (= n (1- (xdrx_polyline_numverts e))))
  44.       (setq p1          (xdrx_curve_getpointatparam e (1- n))
  45.             p2          (xdrx_curve_getpointatparam e n)
  46.             pm          (xdrx_curve_getpointatparam e (- n 0.5))
  47.             bulge (xdrx_polyline_getbulgeat e (1- n))
  48.       )
  49.       (setq p1          (xdrx_curve_getpointatparam e n)
  50.             p2          (xdrx_curve_getpointatparam e (1+ n))
  51.             pm          (xdrx_curve_Getpointatparam e (+ n 0.5))
  52.             bulge (xdrx_polyline_getbulgeat e n)
  53.       )
  54.     )
  55.     (setq d  (distance pm (xdrx_line_midp p1 p2))
  56.           tf (_pnt:toline p p1 p2)
  57.     )
  58.     (cond
  59.       ((and (zerop n) (minusp tf))
  60.        (xdrx_polyline_setpointat e 0 p)
  61.        (setq tmp p1
  62.              p1         p
  63.              p         tmp
  64.        )
  65.       )
  66.       ((and tf1 (>= (_pnt:toline p p1 p2) (distance p1 p2)))
  67.        (xdrx_polyline_setpointat e n p)
  68.        (setq tmp p2
  69.              p2         p
  70.              p         tmp
  71.              n         (1- n)
  72.        )
  73.       )
  74.       (t)
  75.     )
  76.     (xdrx_polyline_addvertexat e (1+ n) p)
  77.     (xdrx_polyline_setbulgeat
  78.       e
  79.       n
  80.       (if (minusp bulge)
  81.         (- (/ (* 2.0 d) (distance p p1)))
  82.         (/ (* 2.0 d) (distance p p1))
  83.       )
  84.     )
  85.     (xdrx_polyline_setbulgeat
  86.       e
  87.       (1+ n)
  88.       (if (minusp bulge)
  89.         (- (/ (* 2.0 d) (distance p p2)))
  90.         (/ (* 2.0 d) (distance p p2))
  91.       )
  92.     )
  93.   )
  94.   ;;main program
  95.   (if (setq e (car (xdrx_entsel "\n选择回路线: " '((0 . "lwpolyline")))))
  96.     (progn
  97.       (setq tf        t
  98.             key        "D"
  99.             pr        "\r"
  100.       )
  101.       (while tf
  102.         (initget 128 "A D")
  103.         (setq p
  104.                (getpoint (strcat pr "拾取点[删点(D)/增点(A)]<" key ">: "))
  105.         )
  106.         (cond
  107.           ((and (not (null p)) (listp p))
  108.            (if (= key "D")
  109.              (_removevertexat e p)
  110.              (_addvertexat e p)
  111.            )
  112.            (setq pr "\r")
  113.           )
  114.           ((= p "A") (setq key "A") (setq pr "\n"))
  115.           ((= p "D") (setq key "D") (setq pr "\n"))
  116.           (t (setq tf nil))
  117.         )
  118.       )
  119.     )
  120.   )
  121.   (princ)
  122. )

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 112 天

连续签到: 2 天

[LV.6]常住居民II

发表于 2014-12-2 21:43:50 | 显示全部楼层
st788796 发表于 2014-11-28 14:44
更新
将块名记录到文字的 xdata

回路连线XDTB_DRAWCIRCUIT
XDTB_DRAWCIRCUIT1.gif

XDTB_DRAWCIRCUIT2.gif

增加减少回路点
XDTB_CIRCUITNODE
XDTB_CIRCUITNODE.gif

统计数据。XDTB_CALCIRCUIT
XDTB_CALCIRCUIT.gif

点评

相当专业的几个插件了,演示也做的相当专业,以后还有需要,还如此的交互吧,相信你能学到很多东西。这是论坛比群更适合讨论问题的地方。  详情 回复 发表于 2014-12-2 22:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 920 天

连续签到: 3 天

[LV.10]以坛为家III

已领礼包: 39个

财富等级: 招财进宝

发表于 2014-12-2 22:00:24 | 显示全部楼层
grs432 发表于 2014-12-2 21:43
回路连线XDTB_DRAWCIRCUIT

相当专业的几个插件了,演示也做的相当专业,以后还有需要,还如此的交互吧,相信你能学到很多东西。这是论坛比群更适合讨论问题的地方。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 936 天

连续签到: 2 天

[LV.10]以坛为家III

点击这里给我发消息

已领礼包: 1255个

财富等级: 财源广进

 楼主| 发表于 2014-12-3 07:56:09 | 显示全部楼层
grs432 发表于 2014-12-2 21:43
回路连线XDTB_DRAWCIRCUIT

引出点时直接回车就在端点处引出,单独指定是为了在中间节点处引出(不知道专业是否需要,如果没有这种情况可以简化掉这一步)

点评

鼠标引出是需要的,可以不在端点引出。这样子也方便,毕竟做图时有的位置不适合放的。。  详情 回复 发表于 2014-12-3 10:01
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 936 天

连续签到: 2 天

[LV.10]以坛为家III

点击这里给我发消息

已领礼包: 1255个

财富等级: 财源广进

 楼主| 发表于 2014-12-3 09:23:30 来自手机 | 显示全部楼层
有两处细节下次完善,当图中存在编号时,随便取一个的图层和字高作默认值

点评

这个功能加入会更好的。。  详情 回复 发表于 2014-12-3 10:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 112 天

连续签到: 2 天

[LV.6]常住居民II

发表于 2014-12-3 10:01:15 | 显示全部楼层
st788796 发表于 2014-12-3 07:56
引出点时直接回车就在端点处引出,单独指定是为了在中间节点处引出(不知道专业是否需要,如果没有这种情 ...

鼠标引出是需要的,可以不在端点引出。这样子也方便,毕竟做图时有的位置不适合放的。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )  

辽公网安备 21040202000005号

GMT+8, 2018-2-20 23:13 , Processed in 0.629373 second(s), 139 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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