找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1163|回复: 17

[求助] [求助]:功能:注解輸出

[复制链接]
发表于 2003-9-21 15:24:23 | 显示全部楼层 |阅读模式

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

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

×
;;;功能:注解輸出
;;;By Spring
;;;08/08-03
;;;______________________________________________________
;;;錯誤處理函數
(defun ai_error        (errmsg)
  (if errmsg
    '("console break"
      "Function Cancelled"
     )
    (princ (strcat "\nError: " errmsg))
  )
  (princ)
) ;_defun
;;;______________________________________________________
(defun C:TT1 (/              cm      old_error              qq      t_hight ss
              count   en      neu     hcount  ed      tag1    edd
              circle_xy              rad     cen     cen_x   cen_y   circle_x
              circle_y              circle_xy              n              listxy  tag
              qq      qqn     p1      ent
             )
  (setq cm (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq old_error *error*)
  (setq *error* ai_error)
  (setq qq nil)
  (princ "\nText high <")
  (setq t_hight (getvar "TEXTSIZE"))
  (princ t_hight)
  (setq t_hight (getstring ">"))
  (setq ss (ssget))
  (setq count 0)
  (while (> (sslength ss) count)
    (setq en (ssname ss count))
    (setq count (1+ count))
    (setq neu (itoa count))
    (setq hcount (strcat "h" neu))
    (setq ed (entget en '("MY_TAG")))
    (setq tag1 (cdr (cadr (cadr (assoc -3 ed)))))
    (setq edd (entget en))
    (if        (/= tag1 nil)
      (progn
        (if (= (cdr (assoc 0 edd)) "CIRCLE")
          (progn
            (setq circle_xy nil)
            (setq rad (cdr (assoc 40 ed)))
            (setq cen (cdr (assoc 10 ed)))
            (setq cen_x (car cen))
            (setq cen_y (nth 1 cen))
            (setq circle_x (+ cen_x (* 0.8 rad)))
            (setq circle_y (+ cen_y (* 0.8 rad)))
            (setq circle_xy (list circle_x circle_y))
            (command "UCS" "World")
            (command "TEXT" circle_xy t_hight 0 hcount)
            (command "UCS" "Prev")
          )
        )                                ;if
        (if (= (cdr (assoc 0 edd)) "LWPOLYLINE")
          (progn
            (setq n 0)
            (setq listxy nil)
            (while (/= (nth n edd) nil)
              (if (= (car (nth n edd)) 10)
                (setq listxy (append listxy
                                     (list (list (cadr (nth n edd))
                                                 (caddr (nth n edd))
                                           )
                                     )
                             )

                )
              )
              (setq n (1+ n))
            )
            (setq listxy (nth 2 listxy))
            (command "UCS" "World")
            (command "TEXT" listxy t_hight 0 hcount)
            (command "UCS" "Prev")
          )
        )                                ;if
        (setq tag1 (strcat hcount ": " tag1))
        (setq qq (cons tag1 qq))
      )
    )
  )                                        ;while
  (if (/= qq nil)
    (progn
      (setq qq (reverse qq))
      (setq qqn (length qq))
      (setq p1 (getpoint "\ninsert point"))
      (setq tag (nth 0 qq))
      (command "_.TEXT" p1 t_hight 0 tag)
      (setq qq (cdr qq))
      (foreach ent qq
        (command "_.TEXT" "" ent)
      )
      (setq textname (entlast))
      (setq textna (entget textname))
      (setq texthigh (* (cdr (assoc 40 textna)) 1.6666666667))
      (setq movdist (* (cdr (assoc 40 textna)) 0.4))
      (setq movdist (- movdist (* movdist 1.5)))
      (setq movdist (list 0 movdist))
      (if (= "TEXT" (cdr (assoc 0 textna)))
        (progn
          (command "_.ucs" "Object" textname)
          (setq TB (textbox (list (cons -1 textname))))
          (setq        PT1 (car TB)
                PT2 (cadr TB)
                PT3 (cadr PT1)
                PT4 (+ (car PT2) 5)
                PT5 (list pt4 pt3)
          )
        )
      )
      (command "LINE" pt1 pt5 "")
      (setq ss (ssget "l"))
      (command "CHANGE" ss "" "p" "Color" 2 "")
      (command "UCS" "Prev")
      (command "MOVE" ss "" "0,0" movdist)
      (command "-ARRAY" ss "" "R" qqn "" texthigh)
    )
    (prompt "\n無標籤圖元可產生註解資料")
  )
  (setvar "cmdecho" cm)
  (setq *error* old_error)
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2003-9-21 15:29:09 | 显示全部楼层

如何注解成如下格式

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

使用道具 举报

 楼主| 发表于 2003-9-21 15:30:03 | 显示全部楼层

DWG

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

使用道具 举报

发表于 2003-9-21 16:15:05 | 显示全部楼层
就那么两行字,  编程有普遍意义吗?  如果不是批处理,  直接写不就行了吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 8个

财富等级: 恭喜发财

发表于 2003-9-23 13:04:54 | 显示全部楼层
小老弟:
      这里的朋友多数书建筑方面的吧,机械的本来就少,有何况是模具方面的呢?
不是问题太难,而是对这个话题感兴趣的不多吧
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

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

使用道具 举报

 楼主| 发表于 2003-9-24 12:15:59 | 显示全部楼层
(sslength ss) 只能處理選集的個數
我的要求是我現在的圖元里含有標籤(my_tag)當我選折的圖元的標籤(my_tag)是一樣時就會統計數量
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-9-24 23:10:27 | 显示全部楼层
看了上面的例子,大致了解你的意思:
是不是这样:
块A有属性标签spring ,但插入时属性值可能是 h1  h2  h3
块B有属性标签test ,但插入时属性值可能是 r1 r2
现要假定图中有5个值为h1的块A,就写  h1  5-spring.

方法:
有选集ss
把里面的实体名都变为(属性值 .  标签)的表.
get-tab  得到标签
get-att   得到属性值

  1. (setq j -1 li '())
  2. (repeat (sslength ss)
  3. (setq e(ssname ss(setq j(1+ j))))
  4. (setq li(cons (cons(get-att e)(get-tab e)) li))
  5. )

现在的li为 ( ("h1" . "spring")("h2" . "spring") ...)
有办法了吧.
现在就差get-tab    get-att   了,
这方面这坛里很多,自个找.

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

使用道具 举报

 楼主| 发表于 2003-9-25 10:48:45 | 显示全部楼层
我的程序可以得到
("h1: Spring" "h2: Spring" "h3: test" "h4: test" "h5: Spring" "h6: Spring")
定義在變量qq ,(setq qq (reverse qq)),我就是後面的不知道怎麼做了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2003-9-25 23:22:31 | 显示全部楼层
很难理解你要的什么.


  1. (defun  get-tab ( en / ed tag1)           ;这是你自己的.
  2. (setq ed (entget en '("MY_TAG")))
  3. (setq tag1 (cdr (cadr (cadr (assoc -3 ed)))))
  4. )

  5. (setq j -1 li '())
  6. (repeat (sslength ss)                                    ;重复
  7. (setq e(ssname ss(setq j(1+ j))))                  ;取其中一个
  8. (setq tag(get-tag e))                                   ;这一个的标签
  9. (if (setq a (assoc tag li))                             
  10.     (setq li(subst a (append a e)li))                ;如果li里有这个标签引导的表了,就加这个实体到这表中.
  11.     (setq li(cons(list tag e) li)                          ;如果li没有,就新生一个.
  12. )
  13. )
  14. ;到这里应该li--> '((tag1 实体1 实体4 实体10...)(tag2 实体3 实体6...)...)
  15. ;下面再repeat一下li
  16. (setq j 0  )

  17. (repeat (length li)
  18. (setq li1(nth  j li))                             ;   '(tag1 实体1 实体4 实体10...)
  19. (setq tag(car li1) li1(cdr li1) )             ; tag可能就是"spring"啦,li1就是你要标H?的实体名
  20. (setq name(strcat "H"(itoa j)))         ;你要写的字 可能是 "H1"
  21. (...下面设字高,开始command "text" 循环li1)
  22. (setq j(1+ j))
  23. ;你要写在旁边的不就是li1的表长吗?
  24. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-9-26 12:24:27 | 显示全部楼层
謝謝你 aeo 差不多就是我想要的,我回去再整理一下看.

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 02:56 , Processed in 0.447425 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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