找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 679|回复: 3

[原创]:树苗木标注

[复制链接]

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-5-23 01:12:50 | 显示全部楼层 |阅读模式

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

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

×
请大家试用,不好就不往下写了,而且近期没时间
特别是雪晴斑竹,树种是你提供.

  1. (defun dxf(a b)(cdr(assoc a b)))
  2. (defun ch-smmc( / )
  3.   (if (/= ""(car $smmc))
  4.           (setq up(strcat(car $smmc)
  5.                           (if(/= ""(cadr $smmc))(strcat ",S="(cadr $smmc))"")
  6.                           (if(/= ""(caddr $smmc))(strcat ","(caddr $smmc))"")   )
  7.                 down ""
  8.                 down(strcat down (if(/= ""(car $smts))(strcat "D="(car $smts))""))
  9.                 down(strcat down(if(/= ""(cadr $smts))(strcat(if(/=  down "")",""") "W="(cadr $smts))""))
  10.                 down(strcat down(if(/= ""(caddr $smts))(strcat(if(/=  down "")",""") "H="(caddr $smts))""))     
  11.      ))
  12. )
  13. ;;;;;----
  14. (defun smmc( / a id_dia what b e $li-qmmc  $li-gmmc do-ok do-get addtolist)
  15. (defun do-ok()
  16.   (if(= ""(get_tile "t-mc"))(set_tile "text""名称不能为空")
  17.      (progn(setq $smmc (list(get_tile"t-mc")(get_tile"t-sl")(get_tile"t-sm"))
  18.                  $smts (list(get_tile"t-d")(get_tile"t-w")(get_tile"t-h"))
  19.             )
  20.            (done_dialog 1)
  21.   )))
  22. (defun do-get()
  23.    (get-smmc (car(entsel)) nil)
  24. )
  25. (defun addtolist()
  26.   (start_list "listsm")
  27.   (mapcar 'add_list $qm-gm)
  28.   (end_list)
  29. )
  30. (setq $li-qmmc '("无患子" "雪松" "日本柳杉" "香樟" "日本早樱" "广玉兰" "桂花" "杜英" "银杏"
  31.                   "合欢" "马褂木" "水杉" "垂柳" "白玉兰" "深山含笑" "乐昌含笑" "榉树" "七叶树"
  32.                   "油松" "黑松" "白皮松" "湿地松" "南洋杉" "侧柏" "圆柏" "金钱松" "赤松" "池杉"
  33.                   "白兰花" "青冈轹" "榕树" "女贞" "棕榈" "鹅掌秋" "国槐" "枫香" "悬铃木" "青杨"
  34.                   "朴树" "旱柳" "乌桕" "白桦" "枫杨" "楝树" "元宝枫" "三角枫" "樱花" "栾树"
  35.                   "臭椿" "白蜡")
  36.        $li-gmmc '("杜鹃" "连翘" "洒金珊瑚" "金叶女贞" "红花继木" "茶梅" "月季" "云南黄馨" "栀子"
  37.                   "龟背冬青" "金丝桃" "贴梗海棠" "六月雪" "小叶黄杨" "八角金盘" "小腊" "龙柏"
  38.                   "金边绣线菊" "南天竹"))
  39. (setq a '("t-mc""t-sl""t-sm") b '("t-d""t-w""t-h")what 10)
  40. (if(< (setq id_dia(load_dialog  "smmc.dcl"))0)(exit))
  41. (while (< 2 what)
  42. (new_dialog "smtj" id_dia)
  43. (if(not $qm-gm)(setq $qm-gm $li-qmmc))
  44. (if(equal $qm-gm $li-qmmc)(set_tile "qm-gm""qm")(set_tile "qm-gm""gm") )
  45. (addtolist)
  46. (action_tile "listsm" "(set_tile "t-mc"(nth(atoi(get_tile "listsm")) $qm-gm))")
  47. (action_tile "qm" "(setq $qm-gm $li-qmmc)(addtolist)")
  48. (action_tile "gm" "(setq $qm-gm $li-gmmc)(addtolist)")
  49. (mapcar '(lambda(x y)(set_tile x y)) a $smmc)
  50. (mapcar '(lambda(x y)(set_tile x y)) b $smts)
  51. (action_tile "get" "(done_dialog 3)")
  52. (action_tile "accept" "(do-ok)")
  53. (setq what(start_dialog))

  54. (if(= what 3)(do-get))
  55. )
  56. (unload_dialog id_dia)
  57. )
  58. ;;;-------
  59. (defun c:sm (/ p0 p1 p2 up down ins-to-screen e f)
  60.   (defun ins-to-screen (p0 p1 p2 / box dis e e1 e1n e2 e2n p11 p22 p33 p44)
  61.     (if (/= up "")
  62.       (progn
  63.         (command "insert" "$_smmc" p1 "1" "1" "0" up (if (/= "" down)
  64.                                                        down
  65.                                                        ""
  66.                                                      )
  67.         )
  68.         (setq e (entget (entlast)))
  69.         (entmod (setq e (subst
  70.                           (cons 8 "$SMMC")
  71.                           (assoc 8 e)
  72.                           e
  73.                         )
  74.                 )
  75.         )
  76.         (vla-GetBoundingBox (vlax-ename->vla-object (entlast)) 'e 'f)
  77.         (setq dis (- (car (vlax-safearray->list f)) (car
  78.                                                          (vlax-safearray->list e)
  79.                                                     )
  80.                   )
  81.         )
  82.         (if (> (car p1) (car p2))
  83.           (progn
  84.             (setq e (entlast)
  85.                   e1 (entnext e)
  86.                   e1n (entget e1)
  87.                   e2 (entnext e1)
  88.                   e2n (entget e2)
  89.                   p11 (dxf 10 e1n)
  90.                   p22 (dxf 10 e2n)
  91.                   p33 (polar p11 pi (+ dis 600))
  92.                   p44 (polar p22 pi (+ dis 600))
  93.             )
  94.             (entmod (setq e1n (subst
  95.                                 (cons 10 p33)
  96.                                 (assoc 10 e1n)
  97.                                 e1n
  98.                               )
  99.                     )
  100.             )
  101.             (entmod (setq e2n (subst
  102.                                 (cons 10 p44)
  103.                                 (assoc 10 e2n)
  104.                                 e2n
  105.                               )
  106.                     )
  107.             )
  108.             (entupd e)
  109.             (command "pline" (polar p1 pi (+ dis 400)) p1 (if p0
  110.                                                             p0
  111.                                                           ) ^c
  112.             )
  113.           )
  114.           (command "pline" (polar p1 0 (+ dis 400)) p1 (if p0
  115.                                                          p0
  116.                                                        ) ^C
  117.           )
  118.         )
  119.         (setq e (entget (entlast)))
  120.         (entmod (setq e (subst
  121.                           (cons 8 "$SMMC")
  122.                           (assoc 8 e)
  123.                           e
  124.                         )
  125.                 )
  126.         )
  127.       )
  128.     )
  129.   )
  130.   (if (not $smmc)
  131.     (setq $smmc '("" ""
  132.            ""
  133.           )
  134.           $smts '("" ""
  135.            ""
  136.           )
  137.     )
  138.   )
  139.   (if (= "" (car $smmc))
  140.     (progn
  141.       (smmc)
  142.       (ch-smmc)
  143.     )
  144.   )
  145.   (setq p0 t)
  146.   (while (and
  147.            p0
  148.            (not (listp p0))
  149.            (/= "" (car $smmc))
  150.          )
  151.     (initget "S")
  152.     (setq p0 (getpoint "\nStart(S设置)"))
  153.     (if (= p0 "S")
  154.       (progn
  155.         (smmc)
  156.         (ch-smmc)
  157.       )
  158.     )
  159.   )
  160.   (if (and
  161.         p0
  162.         (setq p1 (getpoint p0 "NEXT:"))
  163.       )
  164.     (progn
  165.       (setq p2 (getpoint p1 "NEXT:"))
  166.       (if (not p2)
  167.         (setq p2 p1
  168.               p1 p0
  169.               p0 nil
  170.         )
  171.       )
  172.       (ch-smmc)
  173.       (command "undo" "group")
  174.       (ins-to-screen p0 p1 p2)
  175.       (command "undo" "end")
  176.     )
  177.   )
  178.   (princ)
  179. )
  180. ;;; -----------
  181. (defun get-smmc (e how / a b c e e1 e1n e2 e2n en len li1 name1 name2 no)
  182.   (if (and
  183.         (setq en (entget e))
  184.         (dxf 2 en)
  185.         (= (strcase (dxf 2 en)) "$_SMMC")
  186.       )
  187.     (progn
  188.       (setq li1 '())
  189.       (setq e1 (entnext e)
  190.             e1n (entget e1)
  191.             e2 (entnext e1)
  192.             e2n (entget e2)
  193.       )
  194.       (setq name1 (dxf 1 e1n)
  195.             name2 (dxf 1 e2n)
  196.       )                                       ;
  197.       (while (setq no (vl-string-search "," name1))
  198.         (setq li1 (cons (substr name1 1 no) li1)
  199.               name1 (substr name1 (+ no 2))
  200.         )
  201.       )
  202.       (if (/= "" name1)
  203.         (setq li1 (cons name1 li1))
  204.       )
  205.       (setq li1 (reverse li1)
  206.             len (length li1)
  207.       )
  208.       (cond
  209.         ((= len 1)
  210.           (setq $smmc li1)
  211.         )
  212.         ((= len 2)
  213.           (setq $smmc (if (and
  214.                             (setq sec (cadr li1))
  215.                             (wcmatch sec "S=*")
  216.                           )
  217.                         (list (car li1) (substr sec 3) "")
  218.                         (list (car li1) "" sec)
  219.                       )
  220.           )
  221.         )
  222.         ((= len 3)
  223.           (setq $smmc (list (car li1) (substr (cadr li1) 3) (caddr li1)))
  224.         )
  225.       )                                       ;
  226.       (setq li1 '())
  227.       (while (setq no (vl-string-search "," name2))
  228.         (setq li1 (cons (substr name2 1 no) li1)
  229.               name2 (substr name2 (+ no 2))
  230.         )
  231.       )
  232.       (if (/= "" name2)
  233.         (setq li1 (cons name2 li1))
  234.       )
  235.       (setq li1 (reverse li1)
  236.             len (length li1)
  237.       )
  238.       (foreach x li1
  239.         (cond
  240.           ((wcmatch x "D=*")
  241.             (setq a (substr x 3))
  242.           )
  243.           ((wcmatch x "W=*")
  244.             (setq b (substr x 3))
  245.           )
  246.           ((wcmatch x "H=*")
  247.             (setq c (substr x 3))
  248.           )
  249.         )
  250.       )
  251.       (setq $smts (list (if a
  252.                           a
  253.                           ""
  254.                         ) (if b
  255.                             b
  256.                             ""
  257.                           ) (if c
  258.                               c
  259.                               ""
  260.                             )
  261.                   )
  262.       )                                       ;
  263.       (if how
  264.         (progn
  265.           (smmc)
  266.           (ch-smmc)
  267.           (if (/= up "")
  268.             (entmod (setq e1n (subst
  269.                                 (cons 1 up)
  270.                                 (assoc 1 e1n)
  271.                                 e1n
  272.                               )
  273.                     )
  274.             )
  275.           )
  276.           (entmod (setq e2n (subst
  277.                               (cons 1 down)
  278.                               (assoc 1 e2n)
  279.                               e2n
  280.                             )
  281.                   )
  282.           )
  283.           (entupd e)
  284.         )
  285.       )
  286.     )
  287.   )
  288. )
  289. ;;; --------------
  290. (defun c:csm (/ up down e en)
  291.   (command "undo" "group")
  292.   (if (and
  293.         (setq e (car (entsel)))
  294.         (setq en (entget e))
  295.         (dxf 2 en)
  296.         (= (strcase (dxf 2 en)) "$_SMMC")
  297.       )
  298.     (get-smmc e t)
  299.   )
  300.   (command "undo" "end")
  301.   (princ)
  302. )

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

已领礼包: 488个

财富等级: 日进斗金

 楼主| 发表于 2003-5-23 01:15:18 | 显示全部楼层
用法
sm标
csm改
可以从图上抓属性.

要扩充树种,在上面树种里加.

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2003-5-23 13:11:41 | 显示全部楼层
最初由 aeo 发布
[B]用法
sm标
csm改
可以从图上抓属性.

要扩充树种,在上面树种里加.

我不搞园林,所以不知道要什么. [/B]


呵呵,我也改了个。

http://www.xdcad.net/forum/showt ... d=286216#post286216

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 09:49 , Processed in 0.249154 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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