明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4618|回复: 22

[讨论] 模仿天正电气低压系统图

[复制链接]
发表于 2016-7-27 12:46 | 显示全部楼层 |阅读模式
本帖最后由 lea丶丶 于 2016-7-27 12:52 编辑

模仿天正低压系统图

本帖子中包含更多资源

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

x
 楼主| 发表于 2017-8-4 09:22 | 显示全部楼层
  1. (defun c:lea-dyxtt (/ dcl_id Dcl_File k1 lst n show_lst lst1 lst2 lst3 rb1 rb2 tempname dclname filen lea-dyxtt lea-lst2lst)

  2. ;函数功能:生成低压系统图
  3. (defun lea-dyxtt (lst flag /  insert lea-Rectange insertionPnt i item minp maxp PLOT_BL PLOT_TR pdx pdy emkText)
  4.        
  5. (defun insert(insertionPnt  blockname  )
  6.         (vl-load-com)
  7.   (setq acadDocument (vla-get-activedocument (vlax-get-acad-object)))
  8.         (setq whatspace (vla-get-ActiveSpace AcadDocument))
  9.   (setq mSpace (vla-get-ModelSpace acadDocument))
  10.   (setq pSpace (vla-get-PaperSpace acadDocument))
  11.   (setq DwgProps (vla-Get-SummaryInfo acadDocument))
  12.         (if (null (findfile blockname)) (progn (alert "文件没有相应出线数量的馈线柜,请添加") (exit)) blockname)
  13.         (if (= whatspace 1)
  14.                 (vla-InsertBlock mSpace insertionPnt blockname 1 1 1 0)
  15.                 (vla-InsertBlock pSpace insertionPnt blockname 1 1 1 0)
  16.         )
  17. )

  18. (defun lea-Rectange (pt1 pt2)
  19.         (entmake
  20.                 (list
  21.                         '(0 . "LWPOLYLINE")                          ;轻多段线
  22.                         '(100 . "AcDbEntity")
  23.                         '(100 . "AcDbPolyline")
  24.                         '(90 . 4)                                  ;四个顶点
  25.                         '(70 . 1)                                  ;闭合
  26.                         (cons 38 (caddr pt1))                          ;高程
  27.                         (cons 10 (list (car pt1) (cadr pt1)))          ;左下角
  28.                         (cons 10 (list (car pt2) (cadr pt1)))          ;右下角
  29.                         (cons 10 (list (car pt2) (cadr pt2)))          ;右上角
  30.                         (cons 10 (list (car pt1) (cadr pt2)))          ;左上角
  31.                         (cons 210 '(0 0 1))                          ;法线方向
  32.                 )
  33.         )
  34. )

  35.         (setq        insertionPnt(vlax-3d-point(getpoint "\n请输入图框插入位置点: "))
  36.                 i    0         
  37.                 ;lst  '("BYQ-Z.DWG" "GCS-ZJX.DWG" "GCS-7.DWG")
  38.         )
  39.         (repeat (length lst)
  40.                 (insert insertionPnt (nth i lst))
  41.                 (setq item (vlax-ename->vla-object (entlast)))
  42.                 (vla-getboundingbox
  43.                         item
  44.                         'minp
  45.                         'maxp
  46.                 )
  47.                 (setq PLOT_BL (vlax-safearray->list minp)
  48.                         PLOT_TR (vlax-safearray->list maxp)
  49.                 )
  50.                 (setq PDX (ABS (- (caR PLOT_BL) (caR PLOT_TR)))
  51.                         PDY  (ABS (- (caDR PLOT_BL) (caDR PLOT_TR)))
  52.                 )
  53.                 (setq PLOT_BL (list (- (car PLOT_TR) pdx) (- (cadr PLOT_TR) 90) (last PLOT_BL)))
  54.                 (lea-Rectange PLOT_BL PLOT_TR)
  55.                 (defun emkText (pt str h)
  56.                         (entmake (list '(0 . "TEXT") (cons 1 str) (cons 8 "DM_文字表格") (cons 10 pt) (cons 40 h) (cons 11 pt) (cons 72 1) (cons 73 2)))
  57.                 )
  58.                 ;绘制眉头
  59.                 (setq p1 (lea-point-pt PLOT_TR '(0 4 0))
  60.                         p0 (lea-point-pt PLOT_BL '(0 90 0))
  61.                 )
  62.                 (lea-Rectange p0 p1)
  63.                 (if (= flag "抽屉式") (setq flag1 "GCS") (setq flag1 "GGD"))
  64.                 (if (or (= i 0) (= i (1-(length lst)))) (emkText (lea-point-mid p0 p1) "低压柜型号" 2) (emkText (lea-point-mid p0 p1) flag1 2))
  65.                 (setq p2 (lea-point-pt p0 '(0 4 0))
  66.                         p3 (lea-point-pt p1 '(0 4 0))
  67.                 )
  68.                 (lea-Rectange p2 p3)
  69.                 (if (or (= i 0) (= i (1-(length lst)))) (emkText (lea-point-mid p2 p3) "低压柜编号" 2) (emkText (lea-point-mid p2 p3) (strcat "AA" (rtos i 2 0)) 2))
  70.                 ;眉头结束
  71.                 (setq insertionPnt (vlax-3d-point PLOT_TR)
  72.                         i  (1+ i)
  73.                 )
  74.         )
  75. )

  76. ;删除列表里其中某个位置的元素
  77. (defun lea-lst2lst (n lst / lst1 n1 i)
  78.         (setq n1 (length lst)
  79.                 i 0
  80.                 lst1 '()
  81.         )
  82.         (repeat n1
  83.                 (if (/= i n )(setq lst1 (cons (nth i lst) lst1)) (setq i n))
  84.                 (setq i (1+ i))
  85.         )
  86.         (reverse lst1)
  87. )

  88.         (vl-load-com)
  89.         (lea-start)
  90.         (defun show_lst( key lst)
  91.                 (start_list key)
  92.                 (mapcar 'add_list lst)
  93.                 (end_list)
  94.         )
  95.         (setq dclname
  96.                 (cond
  97.                         ((setq tempname (vl-filename-mktemp "temp.dcl")
  98.                                  filen (open tempname "w")
  99.                          )
  100.                                 (foreach stream '(
  101.                                                                                                          "RENAME:dialog {"                                                                       
  102.                                                                                                          "    :boxed_column {label = "lea低压系统图" ;"       
  103.                                                                                                          "                :row {:radio_button { key = "krb1" ; label = "抽屉式" ; width = 20 ; }"
  104.                                                                                                          "                                                                             :radio_button { key = "krb2" ; label = "固定式" ;width = 20 ; }}"
  105.                                                                                                          "        :row {"
  106.                                                                                                          "                 :list_box { key = "klst1" ; label = "插入顺序从下往上" ; width = 20 ; }"
  107.                                                                                                          "        :column {"
  108.                                                                                                          "                :row {:button { key = "kb1" ; label = "变压器左" ; width = 20 ; }"
  109.                                                                                                          "                                                                            :button { key = "kb2" ; label = "变压器右" ; width = 20 ; }}"
  110.                                                                                                          "                :row {:button { key = "kb3" ; label = "进线柜左" ; width = 20 ; }"
  111.                                                                                                          "                                                                            :button { key = "kb4" ; label = "进线柜右" ; width = 20 ; }}"                                                                          
  112.                                                                                                          "                :row {:button { key = "kb5" ; label = "电容柜" ; width = 20 ; }"
  113.                                                                                                          "                                                                            :button { key = "kb6" ; label = "联络柜" ; width = 20 ; }}"
  114.                                                                                                          "                :row {:button { key = "kb7" ; label = "馈线柜" ; width = 20 ; }"
  115.                                                                                                          "                                                                            :edit_box { key = "k1" ;  width = 20 ; }}"
  116.                                                                                                          "                :button { key = "kb8" ; label = "删除" ; width = 20 ; }"       
  117.                                                                                                          "                }"       
  118.                                                                                                          "             }"
  119.                                                                                                          "             }"
  120.                                                                                                          " spacer_1;"
  121.                                                                                                          " ok_cancel;"
  122.                                                                                                          "             }"                                                                         
  123.                                                                                                  )
  124.                                         (write-line stream filen)
  125.                                 )
  126.                                 (close filen)
  127.                                 tempname
  128.                         )
  129.                 )
  130.         )
  131.         (setq Dcl_Id (load_dialog dclname))  
  132.         (new_dialog "RENAME" Dcl_Id)
  133.         (setq lst '()
  134.                 lst1 '("GCS变压器左进.DWG" "GCS变压器右进.DWG" "GCS进线柜左进.DWG" "GCS进线柜右进.DWG" "GCS电容柜.DWG" "GCS联络柜.DWG" "GCS出线柜-");GCS柜
  135.                 lst2 '("GGD变压器左进.DWG" "GGD变压器右进.DWG" "GGD进线柜左进.DWG" "GGD进线柜右进.DWG" "GGD电容柜.DWG" "GGD联络柜.DWG" "GGD出线柜-");GGD柜
  136.         )
  137.         (set_tile "k1" (setq na1 "1"))
  138.         (set_tile "krb1" "1")
  139.         (setq k1(get_attr "krb1" "label"));预设起始值
  140.         (action_tile "krb1" "(setq k1(get_attr $key "label"))")
  141.         (action_tile "krb2" "(setq k1(get_attr $key "label"))")
  142.         ;(cond
  143.         ;        ((= k1 "抽屉式") (setq lst3 lst1))
  144.         ;        ((= k1 "固定式") (setq lst3 lst2))
  145.         ;)
  146.         (action_tile "kb1" "(if (= k1 "抽屉式") (setq lst3 lst1) (setq lst3 lst2))(setq lst (cons (nth 0 lst3) lst))(show_lst "klst1" lst)")
  147.         (action_tile "kb2" "(if (= k1 "抽屉式") (setq lst3 lst1) (setq lst3 lst2))(setq lst (cons (nth 1 lst3) lst))(show_lst "klst1" lst)")
  148.         (action_tile "kb3" "(if (= k1 "抽屉式") (setq lst3 lst1) (setq lst3 lst2))(setq lst (cons (nth 2 lst3) lst))(show_lst "klst1" lst)")
  149.         (action_tile "kb4" "(if (= k1 "抽屉式") (setq lst3 lst1) (setq lst3 lst2))(setq lst (cons (nth 3 lst3) lst))(show_lst "klst1" lst)")
  150.         (action_tile "kb5" "(if (= k1 "抽屉式") (setq lst3 lst1) (setq lst3 lst2))(setq lst (cons (nth 4 lst3) lst))(show_lst "klst1" lst)")
  151.         (action_tile "kb6" "(if (= k1 "抽屉式") (setq lst3 lst1) (setq lst3 lst2))(setq lst (cons (nth 5 lst3) lst))(show_lst "klst1" lst)")
  152.         (action_tile "k1" "(setq na1 $value)")
  153.         (action_tile "kb7" "(if (= k1 "抽屉式") (setq lst3 lst1) (setq lst3 lst2))(setq na2 (strcat (nth 6 lst3) na1 ".DWG"))(setq lst (cons na2 lst))(show_lst "klst1" lst)")
  154.         (action_tile "klst1" "(setq n (atoi $value) )")
  155.         (action_tile "kb8" "(setq lst (lea-lst2lst n lst))(show_lst "klst1" lst)")
  156.         (action_tile "accept" "(done_dialog)")
  157.         (start_dialog)
  158.         (lea-dyxtt (reverse lst) k1)
  159.         (unload_dialog Dcl_Id)
  160.   (vl-file-delete  tempname)
  161.         (lea-end)
  162. )
回复 支持 0 反对 1

使用道具 举报

 楼主| 发表于 2017-8-4 09:21 | 显示全部楼层
我爱lisp 发表于 2017-8-3 15:56
应该收费,劳动所得,简单适用。
建议放出试用版给大家用,这样可以帮着你完善程序。
说明,我不是搞电的 ...

以前写的、比较乱,就没乱发,其实原理很简单插入块,只要你把dcl做好就OK了
发表于 2016-7-27 14:10 | 显示全部楼层
我也是做电气设计的。。。。源码可以分享吗?
发表于 2017-8-3 15:56 | 显示全部楼层
本帖最后由 我爱lisp 于 2017-8-3 15:59 编辑

应该收费,劳动所得,简单适用。
建议放出试用版给大家用,这样可以帮着你完善程序。
说明,我不是搞电的,用不上
发表于 2017-8-3 18:33 来自手机 | 显示全部楼层
系统图每个院要求不同,给你也没用。这是要定制的
 楼主| 发表于 2017-8-4 09:23 | 显示全部楼层
xinxirong 发表于 2017-8-3 18:33
系统图每个院要求不同,给你也没用。这是要定制的

是的,其实也可以发的,只要你把块做好了就OK了
发表于 2017-8-4 15:14 | 显示全部楼层
鼓励开源,楼主是做电的吗?可以考虑加入些电流、线径计算之类的小函数。一点点做强
发表于 2017-8-11 23:26 | 显示全部楼层
运行不了呢  输入的点错误
 楼主| 发表于 2017-9-20 21:59 来自手机 | 显示全部楼层
我爱lisp 发表于 2017-8-4 15:14
鼓励开源,楼主是做电的吗?可以考虑加入些电流、线径计算之类的小函数。一点点做强

嗯,做电的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-20 02:52 , Processed in 0.156336 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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