找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2068|回复: 14

[求助] 一个仿燕秀工具箱中的对象快速过滤工具。想请高手帮我优化下代码。感激不尽!

[复制链接]
发表于 2013-7-11 19:56:32 | 显示全部楼层 |阅读模式

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

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

×
  1. ;;;對象過濾工具
  2. (defun c:ZJ-EE (/ i n ns1 ns2 ns3 ns4 ns5 ns6 ns7 ns8 ns9 ns10 ns11 ns12 ns13 ns14 ns15 ss s1 sn nss)
  3.   (setvar "cmdecho" 0)
  4.    (initget 6)
  5.   (princ "\n->> 對象過濾工具")
  6.   (princ "\n->>-> 請選取要過濾的對象 [確定選取全部] 或 <Esc 退出>")
  7.   (if (= (setq ss (ssget)) nil) (setq ss (ssget "x")))
  8.   (setq n  (sslength ss)
  9.   i  0
  10.   ns1 (ssadd)
  11.   ns2 (ssadd)
  12.   ns3 (ssadd)
  13.   ns4 (ssadd)
  14.   ns5 (ssadd)
  15.   ns6 (ssadd)
  16.   ns7 (ssadd)
  17.   ns8 (ssadd)
  18.   ns9 (ssadd)
  19.   ns10 (ssadd)
  20.   ns11 (ssadd)
  21.   ns12 (ssadd)
  22.   ns13 (ssadd)
  23.   ns14 (ssadd)
  24.   ns15 (ssadd)
  25.   nss (ssadd)
  26.   )
  27.   (repeat n
  28.     (setq s1 (ssname ss i)
  29.     sn (cdr (assoc 0 (entget s1)))
  30.     )
  31.      (cond
  32.        ((= sn "LINE")
  33.     (setq ns1 (ssadd s1 ns1))
  34.        )

  35.        ((= sn "INSERT")
  36.     (setq ns2 (ssadd s1 ns2))
  37.        )

  38.        ((= sn "ELLIPSE")
  39.     (setq ns3 (ssadd s1 ns3))
  40.        )

  41.        ((or (= sn "LWPOLYLINE") (= sn "POLYLINE"))
  42.     (setq ns4 (ssadd s1 ns4))
  43.        )

  44.        ((= sn "ARC")
  45.     (setq ns5 (ssadd s1 ns5))
  46.        )

  47.        ((= sn "CIRCLE")
  48.     (setq ns6 (ssadd s1 ns6))
  49.        )

  50.        ((= sn "MTEXT")
  51.     (setq ns7 (ssadd s1 ns7))
  52.        )

  53.        ((= sn "TEXT")
  54.     (setq ns8 (ssadd s1 ns8))
  55.        )

  56.        ((= sn "DIMENSION")
  57.     (setq ns9 (ssadd s1 ns9))
  58.        )

  59.        ((= sn "RAY")
  60.     (setq ns10 (ssadd s1 ns10))
  61.        )

  62.        ((= sn "XLINE")
  63.     (setq ns11 (ssadd s1 ns11))
  64.        )

  65.        ((= sn "POINT")
  66.     (setq ns12 (ssadd s1 ns12))
  67.        )

  68.        ((= sn "SPLINE")
  69.     (setq ns13 (ssadd s1 ns13))
  70.        )

  71.        ((= sn "HATCH")
  72.     (setq ns14 (ssadd s1 ns14))
  73.        )

  74.        ((= sn "SOLID")
  75.     (setq ns15 (ssadd s1 ns15))
  76.        )
  77.      )          ;cond
  78.     (setq i (1+ i))
  79.   )
  80.   (guolvqi)
  81.   (if nss
  82.    (progn
  83.      (sssetfirst nil nss)
  84.      (princ (strcat "\n ->>-> 對象過濾工具 --> 總共選取了 " (rtos (sslength nss) 2) " 個圖元!!"))
  85.    )
  86.      (princ "\n ->> 沒有選中的物體!!")
  87.   )
  88.   (prin1)
  89. )

  90. ----------------------------------------------------------
  91. (defun ify (x` `bbx)
  92.    (if (/= (sslength x`) 0)
  93.   (mode_tile `bbx 0)
  94.   (mode_tile `bbx 1)
  95.    )
  96. )

  97. ----------------------------------------------------------

  98. (defun guolvqi (/ dcl-id dd)
  99.    (setq dcl-id (load_dialog "過濾器"));加載DCL文件
  100. ;   (if (< dcl-id 0)
  101. ;     (progn(alert "f.dcl 文件不存在!!!"))
  102. ;  (exit)
  103. ;   )
  104.    (new_dialog "g1" dcl-id);開始壹個新的對話框並顯示該對話框,而且能指定壹個缺省操作
  105.    (ify ns1 "bb1")
  106.    (ify ns2 "bb2")
  107.    (ify ns3 "bb3")
  108.    (ify ns4 "bb4")
  109.    (ify ns5 "bb5")
  110.    (ify ns6 "bb6")
  111.    (ify ns7 "bb7")
  112.    (ify ns8 "bb8")
  113.    (ify ns9 "bb9")
  114.    (ify ns10 "bb10")
  115.    (ify ns11 "bb11")
  116.    (ify ns12 "bb12")
  117.    (ify ns13 "bb13")
  118.    (ify ns14 "bb14")
  119.    (ify ns15 "bb15")
  120.    (action_tile "bb1" "(guolv-line)(guolv-shuliang)")
  121.    (action_tile "bb2" "(guolv-insert)(guolv-shuliang)")
  122.    (action_tile "bb3" "(guolv-ellipse)(guolv-shuliang)")
  123.    (action_tile "bb4" "(guolv-lwpolyline)(guolv-shuliang)")
  124.    (action_tile "bb5" "(guolv-arc)(guolv-shuliang)")
  125.    (action_tile "bb6" "(guolv-circle)(guolv-shuliang)")
  126.    (action_tile "bb7" "(guolv-mtext)(guolv-shuliang)")
  127.    (action_tile "bb8" "(guolv-text)(guolv-shuliang)")
  128.    (action_tile "bb9" "(guolv-dimension)(guolv-shuliang)")
  129.    (action_tile "bb10" "(guolv-ray)(guolv-shuliang)")
  130.    (action_tile "bb11" "(guolv-xline)(guolv-shuliang)")
  131.    (action_tile "bb12" "(guolv-point)(guolv-shuliang)")
  132.    (action_tile "bb13" "(guolv-spline)(guolv-shuliang)")
  133.    (action_tile "bb14" "(guolv-hatch)(guolv-shuliang)")
  134.    (action_tile "bb15" "(guolv-solid)(guolv-shuliang)")
  135.    (action_tile "bb16" "(guolv-color)(guolv-shuliang)")

  136.   (if (= (setq dd (start_dialog)) 0) (princ) )

  137.   (prin1)
  138. )

  139. ----------------------------------------------------------

  140.  (defun guolv-shuliang ()
  141.   (set_tile "t-obj" (itoa (sslength nss)))
  142.   (mode_tile $key 1)
  143.    (prin1)
  144.   )

  145. ----------------------------------------------------------
  146.  (defun guolv-line (/ n i ls1)
  147.   (setq n (sslength ns1) i 0 )
  148.   (repeat n
  149.     (setq ls1 (ssname ns1 i)
  150.     nss (ssadd ls1 nss)
  151.     i (1+ i)
  152.     )
  153.   )
  154.    (prin1)
  155.   )

  156. ----------------------------------------------------------
  157.  (defun guolv-insert (/ n i ls2)
  158.   (setq n (sslength ns2) i 0 )
  159.   (repeat n
  160.     (setq ls2 (ssname ns2 i)
  161.     nss (ssadd ls2 nss)
  162.     i (1+ i)
  163.     )
  164.   )
  165.    (prin1)
  166.   )

  167. ----------------------------------------------------------
  168.  (defun guolv-ellipse (/ n i ls3)
  169.   (setq n (sslength ns3) i 0 )
  170.   (repeat n
  171.     (setq ls3 (ssname ns3 i)
  172.     nss (ssadd ls3 nss)
  173.     i (1+ i)
  174.     )
  175.   )
  176.    (prin1)
  177.   )

  178. ----------------------------------------------------------
  179.  (defun guolv-lwpolyline (/ n i ls4)
  180.   (setq n (sslength ns4) i 0 )
  181.   (repeat n
  182.     (setq ls4 (ssname ns4 i)
  183.     nss (ssadd ls4 nss)
  184.     i (1+ i)
  185.     )
  186.   )
  187.    (prin1)
  188.   )

  189. ----------------------------------------------------------
  190.  (defun guolv-arc (/ n i ls5)
  191.   (setq n (sslength ns5) i 0 )
  192.   (repeat n
  193.     (setq ls5 (ssname ns5 i)
  194.     nss (ssadd ls5 nss)
  195.     i (1+ i)
  196.     )
  197.   )
  198.    (prin1)
  199.   )

  200. ----------------------------------------------------------
  201.  (defun guolv-circle (/ n i ls6)
  202.   (setq n (sslength ns6) i 0 )
  203.   (repeat n
  204.     (setq ls6 (ssname ns6 i)
  205.     nss (ssadd ls6 nss)
  206.     i (1+ i)
  207.     )
  208.   )
  209.    (prin1)
  210.   )

  211. ----------------------------------------------------------
  212.  (defun guolv-mtext (/ n i ls7)
  213.   (setq n (sslength ns7) i 0 )
  214.   (repeat n
  215.     (setq ls7 (ssname ns7 i)
  216.     nss (ssadd ls7 nss)
  217.     i (1+ i)
  218.     )
  219.   )
  220.    (prin1)
  221.   )

  222. ----------------------------------------------------------
  223.  (defun guolv-text (/ n i ls8)
  224.   (setq n (sslength ns8) i 0 )
  225.   (repeat n
  226.     (setq ls8 (ssname ns8 i)
  227.     nss (ssadd ls8 nss)
  228.     i (1+ i)
  229.     )
  230.   )
  231.    (prin1)
  232.   )

  233. ----------------------------------------------------------
  234.  (defun guolv-dimension (/ n i ls9)
  235.   (setq n (sslength ns9) i 0 )
  236.   (repeat n
  237.     (setq ls9 (ssname ns9 i)
  238.     nss (ssadd ls9 nss)
  239.     i (1+ i)
  240.     )
  241.   )
  242.    (prin1)
  243.   )

  244. ----------------------------------------------------------
  245.  (defun guolv-ray (/ n i ls10)
  246.   (setq n (sslength ns10) i 0 )
  247.   (repeat n
  248.     (setq ls10 (ssname ns10 i)
  249.     nss (ssadd ls10 nss)
  250.     i (1+ i)
  251.     )
  252.   )
  253.    (prin1)
  254.   )

  255. ----------------------------------------------------------
  256.  (defun guolv-xline (/ n i ls11)
  257.   (setq n (sslength ns11) i 0 )
  258.   (repeat n
  259.     (setq ls11 (ssname ns11 i)
  260.     nss (ssadd ls11 nss)
  261.     i (1+ i)
  262.     )
  263.   )
  264.    (prin1)
  265.   )

  266. ----------------------------------------------------------
  267.  (defun guolv-point (/ n i ls12)
  268.   (setq n (sslength ns12) i 0 )
  269.   (repeat n
  270.     (setq ls12 (ssname ns12 i)
  271.     nss (ssadd ls12 nss)
  272.     i (1+ i)
  273.     )
  274.   )
  275.    (prin1)
  276.   )

  277. ----------------------------------------------------------
  278.  (defun guolv-spline (/ n i ls13)
  279.   (setq n (sslength ns13) i 0 )
  280.   (repeat n
  281.     (setq ls13 (ssname ns13 i)
  282.     nss (ssadd ls13 nss)
  283.     i (1+ i)
  284.     )
  285.   )
  286.    (prin1)
  287.   )

  288. ----------------------------------------------------------
  289.  (defun guolv-hatch (/ n i ls14)
  290.   (setq n (sslength ns14) i 0 )
  291.   (repeat n
  292.     (setq ls14 (ssname ns14 i)
  293.     nss (ssadd ls14 nss)
  294.     i (1+ i)
  295.     )
  296.   )
  297.    (prin1)
  298.   )


  299. ----------------------------------------------------------
  300.  (defun guolv-solid (/ n i ls15)
  301.   (setq n (sslength ns15) i 0 )
  302.   (repeat n
  303.     (setq ls15 (ssname ns15 i)
  304.     nss (ssadd ls15 nss)
  305.     i (1+ i)
  306.     )
  307.   )
  308.    (prin1)
  309.   )

  310. ----------------------------------------------------------[code=dcl]g1:dialog{
  311.   label="  對象過濾工具 ";
  312.   :boxed_column{
  313.     label=" --->  對象  <--- ";  //alignment=centered;
  314.        :concatenation{
  315.          :text_part{label="-->>  總共選取了:";}
  316.          :text{width=6; key="t-obj";}
  317.          :text_part{label="個圖元!!";}
  318.       //alignment=centered;
  319.      }  

  320.     :row{
  321.       :button{label="直線  (LINE) ";key="bb1"; height = 3.5; width = 1;}
  322.       :spacer{height=0.1;}
  323.       :button{label="塊    (INSERT) ";key="bb2"; height = 3.5; width = 0.1;}
  324.       :spacer{height=0.1;}
  325.       :button{label="橢圓/橢圓弧 (ELLIPSE)";key="bb3"; height = 3.5; width = 0.1;}
  326.       :spacer{height=0.1;}
  327.       :button{label="多段線  (LWPOLYLINE)";key="bb4"; height = 3.5; width = 0.1;}
  328.       }
  329.     :spacer{height=0.1;}
  330.     :row{
  331.       :button{label="圓弧  (ARC)  ";key="bb5"; height = 3.5; width = 0.1;}
  332.       :spacer{height=0.1;}
  333.       :button{label="圓  (CIRCLE) ";key="bb6"; height = 3.5; width = 0.1;}
  334.       :spacer{height=0.1;}
  335.       :button{label="多行文字  (MTEXT)";key="bb7"; height = 3.5; width = 0.1;}
  336.       :spacer{height=0.1;}
  337.       :button{label="單行文字  (TEXT)";key="bb8"; height = 3.5; width = 0.1;}
  338.       }
  339.     :spacer{height=0.1;}
  340.     :row{
  341.       :button{label="標注  (DIMENSION)";key="bb9"; height = 3.5; width = 0.1;}
  342.       :spacer{height=0.1;}
  343.       :button{label="射線  (RAY)  ";key="bb10"; height = 3.5; width = 0.1;}
  344.       :spacer{height=0.1;}
  345.       :button{label="構造線  (XLINE)";key="bb11"; height = 3.5; width = 0.1;}
  346.       :spacer{height=0.1;}
  347.       :button{label="點  (POINT)";key="bb12"; height = 3.5; width = 0.1;}
  348.       }
  349.     :spacer{height=0.1;}
  350.     :row{
  351.       :button{label="樣條曲線  (SPLINE)";key="bb13"; height = 3.5; width = 0.1;}
  352.       :spacer{height=0.1;}
  353.       :button{label="圖案填充  (HATCH)";key="bb14"; height = 3.5; width = 0.1;}
  354.       :spacer{height=0.1;}
  355.       :button{label="2D實面  (SOLID)";key="bb15"; height = 3.5; width = 0.1;}
  356.       :spacer{height=0.1;}
  357.       :button{label="顏色    (COLOR)";key="bb16"; height = 3.5; width = 0.1;}
  358.       }
  359.     :spacer{height=0.1;}
  360.        }
  361.   spacer_1;
  362.   ok_cancel;
  363.      }

 (defun guolv-color (/ co)
     (if (setq co (acad_colordlg 7))
    (setq nss (ssget "p" (list (cons 62 co))))
     )
   (prin1)
  )[/code]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-11 20:46:56 | 显示全部楼层
你贴的是工具箱里面的代码? 看到那么多的SSADD,眼晕了。

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

使用道具 举报

 楼主| 发表于 2013-7-11 20:50:25 | 显示全部楼层
就是因为里面太多的SSADD之类的代码。看得人脑袋都是晕的。我想请你们帮我优化下代码。谢谢。:)

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-11 21:15:50 | 显示全部楼层
xiaoyuzj503 发表于 2013-7-11 20:50
就是因为里面太多的SSADD之类的代码。看得人脑袋都是晕的。我想请你们帮我优化下代码。谢谢。

你想要修改什么啊?

点评

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

使用道具 举报

 楼主| 发表于 2013-7-11 21:18:40 | 显示全部楼层
本帖最后由 xiaoyuzj503 于 2013-7-11 21:21 编辑
newer 发表于 2013-7-11 21:15
你想要修改什么啊?


简化代码。用更简单的方法写出同样的用法。{:soso_e100:}

点评

说心里话,简化别人的代码,还不如自己重新写一个。 你有什么技术上的难点吗,说出来讨论。 用下晓东工具箱2013的 快速选择 工具吧。 http://bbs.xdcad.net/thread-668256-1-1.html  详情 回复 发表于 2013-7-11 21:22
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-11 21:22:46 | 显示全部楼层
xiaoyuzj503 发表于 2013-7-11 21:18
简化代码。用更简单的方法写出同样的用法。

说心里话,简化别人的代码,还不如自己重新写一个。

你有什么技术上的难点吗,说出来讨论。

用下晓东工具箱2013的 快速选择 工具吧。

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

使用道具 举报

 楼主| 发表于 2013-7-11 21:32:42 来自手机 | 显示全部楼层
怎么样可以从一个选择集内依条件分出多个不同的选择集?

点评

为什么要依据条件从一个选择集里面在分出啊,当初就根据条件去建立啊?  详情 回复 发表于 2013-7-11 21:41
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-7-11 21:41:35 | 显示全部楼层
xiaoyuzj503 发表于 2013-7-11 21:32
怎么样可以从一个选择集内依条件分出多个不同的选择集?

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2013-7-11 22:38:53 来自手机 | 显示全部楼层
可以用mapcar之类的函数去归类选择集吗?我觉得那样看起来应该比较简洁
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-7-12 00:18:38 来自手机 | 显示全部楼层
你自己看懂了多少?另外这个程序能用吗?来自: Android客户端
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-12 08:40:41 | 显示全部楼层
本帖最后由 xiaoyuzj503 于 2013-7-12 08:42 编辑

不好意思。现在附上文件。这个程序是可以用的。之前贴代码的时候不小心弄错了。只是觉得自己用了16个空选择集显得太繁琐。 所以想请问下有没有更简洁的方法。感谢Free-Lancer以及newer版主。
jdfw.gif

過濾器.rar

2.2 KB, 下载次数: 22, 下载积分: D豆 -1 , 活跃度 1

点评

你可以学学 Set 的用法,使用图元类型作变量,这样代码会大大缩短,可参考的例子,自由定制的刷子、还有几个测量长度程序  详情 回复 发表于 2013-7-12 08:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-7-12 08:58:29 | 显示全部楼层
xiaoyuzj503 发表于 2013-7-12 08:40
不好意思。现在附上文件。这个程序是可以用的。之前贴代码的时候不小心弄错了。只是觉得自己用了16个空选择 ...

你可以学学 Set 的用法,使用图元类型作变量,这样代码会大大缩短,可参考的例子,自由定制的刷子、还有几个测量长度程序
  1. (defun getobjectss (ss / sl i e el typ ll)
  2.   (setq        sl (sslength ss)
  3.         i  -1
  4.   )
  5.   (repeat sl
  6.     (setq e   (ssname ss (setq i (1+ i)))
  7.           el  (entget e)
  8.           typ (strcat "ea" (cdr (assoc 0 el)))
  9.     )
  10.     (set (read typ) (cons e (eval (read typ))))
  11.     (if        (not (vl-position typ ll))
  12.       (setq ll (cons typ ll))
  13.     )
  14.   )
  15.   ll
  16. )
  17. ;;(mapcar '(lambda(x) (eval (read x))) ll)

这样就按类型构造出实体列表了,如果构造选择集只要把实体ssadd加入即可

点评

感谢eachy的指导。你说的那些例子可否贴个路径参考?感激不尽!  详情 回复 发表于 2013-7-12 13:53
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 61个

财富等级: 招财进宝

发表于 2013-7-12 11:54:22 | 显示全部楼层
我也写过一个类似的,也是用的SSADD,但是效率不高,图元多的时候很慢的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-7-12 13:53:57 | 显示全部楼层
eachy 发表于 2013-7-12 08:58
你可以学学 Set 的用法,使用图元类型作变量,这样代码会大大缩短,可参考的例子,自由定制的刷子、还有 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 17:23 , Processed in 0.308482 second(s), 69 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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