Imagizz 发表于 2014-7-28 11:50:49

求一个按所选择的图元执行不同命令的例子

选中多段线框按命令出来 QDIM
选择圆弧按命令出来圆弧标注
选圆按命令出来半径标注
可以多选 最好可以先输命令后选实体

ZZXXQQ 发表于 2014-7-28 21:33:06

;选中多段线框按命令出来 QDIM
;选择圆弧按命令出来圆弧标注
;选圆按命令出来半径标注
;可以多选 最好可以先输命令后选实体
;按实体调用命令 明经 ZZXXQQ 2014.7.28
(defun c:tt ()
(setvar "CMDECHO" 0)
(if (setq ss (ssget '((0 . "ARC,CIRCLE,*POLYLINE")))) (progn
(repeat (setq i (sslength ss))
   (setq ent (entget(ssname ss (setq i (1- i)))))
   (setq enm (cdr(assoc 0 ent)))
   (cond
    ((= enm "ARC")
   (setq pc (cdr(assoc 10 ent)))
   (setq r (cdr(assoc 40 ent)))
   (setq p1 (polar pc (cdr(assoc 50 ent)) r))
   (setq pm (osnap p1 "MID"))
   (command "_DIMRADIUS" (list en pm) (polar pm (angle pc pm) r))
    )
    ((= enm "CIRCLE")
   (setq pc (cdr(assoc 10 ent)))
   (setq r (cdr(assoc 40 ent)))
   (setq p1 (polar pc (/ pi 4) r))
   (command "_.DIMDIAMETER" (list en p1) (polar p1 (/ pi 4) r))
    )
    ((wcmatch enm "*POLYLINE")
   (command "QDIM")
   (while (> (getvar "CMDACTIVE") 0) (command PAUSE))
    )
   )
)
))
(princ)
)

Imagizz 发表于 2014-7-29 09:42:40

ZZXXQQ 发表于 2014-7-28 21:33 static/image/common/back.gif


多段线标注要选两次才行   圆和圆弧 标注不起来
不好意思 好像是我题目出的问题因为标注的画要指定边才行
我改一下不知道可以吗
假设Z轴归零命令是命令AAA块内实体Z轴归零命令是BBB
当我选择除块以外的实体是 按命令出来是命令AAA
当我选择块时按命令出来是BBB
做这个程序因为装了个工具箱 工具箱的Z轴归零命令不能对块用   块内归零命令又不能对实体用想吧这两个命令合并起来
求大神再帮帮忙

ZZXXQQ 发表于 2014-7-30 07:54:49

(defun c:ccc ()
(if (setq ss (ssget)) (progn
(repeat (setq i (sslength ss))
   (setq ent (entget(ssname ss (setq i (1- i)))))
   (if (= (cdr(assoc ent)) "INSERT") (c:BBB) (c:AAA))
)
))
(princ)
)

Imagizz 发表于 2014-7-31 15:25:23

ZZXXQQ 发表于 2014-7-30 07:54 static/image/common/back.gif


还是不行运行到找到几个图元就停止了   
页: [1]
查看完整版本: 求一个按所选择的图元执行不同命令的例子