请meflying斑竹帮忙看一下下面的程序,翻了好几天的资料也没找到解决方法。- ;;命 令:bbb
- ;;功 能:增强连续尺寸标注,根据基准标注的倾斜角度自动调整后序标注的倾斜角度。
- ;;编 写:2005.1.12
- (defun c:bbb ( / ODCMD ODOSM ODTVA dim_select ss pt1 ent en1 el1 ANG ANG1 P10 P13 P14 EL EN ENT LOOPMK)
- (setq odcmd (getvar "cmdecho")
- odosm (getvar "osmode")
- odtva (getvar "TEXTEVAL")
- );;setq
- (setvar "osmode" 16383)
- (setvar "TEXTEVAL" 1)
- (defun dim_select () ;;选择连续标注
- (while (and (setq ent(entsel "\n选择连续标注:")
- en (car ent)
- el (entget en)
- );;setq
- (/= (cdr (assoc 0 el)) "DIMENSION") ;;如果不是标注
- (member'(100 . "AcDbRadialDimension") el) ;;如果是半径标注
- (member '(100 . "AcDbDiametricDimension") el) ;;如果是直径标注
- );;and
- (princ "\n需要线性、坐标或角度关联标注。")
- );;while
- (if (member '(100 . "AcDbAlignedDimension") el)
- (setq p10 (cdr (assoc 10 el)) ;;返回标注的定义点:尺寸线的位置点(在 WCS 中)
- p14 (cdr (assoc 14el)) ;;返回线性标注和角度标注的定义点:第二条尺寸界线原点(在WCS 中)
- );;setq
- (setq loopmk nil)
- );;if
- );;defun
-
- (command "._undo" "_be")
- (setq loopmk T)
- (dim_select) ;;选择连续标注
- (setvar "cmdecho" 1)
-
- ;;下面这几句不知道如何处理。
- ;;系统帮助中,连续标注命令"DIMCONTINUE"中有解释:
- ;;"如果在当前任务中未创建标注,AutoCAD 将提示用户选择线性标注、坐标标注或角度标注,以用作连续标注的基准。
- ;;否则,AutoCAD 将跳过该提示,并在当前任务中使用上一次创建的标注对象。"
- ;;问题:1、最后创建的标注如果被删除,以前无论是否创建的有标注,"DIMCONTINUE"命令均提示选择标注。
- ;;帮助中所说"上一次创建的标注对象"看来只能存放一个标注图元名,如果该图元被删除,则要求进行选择。
- ;;现在问题来了,如何取得"上一次创建的标注对象"的图元名?
- ;;2、如果不能取得"上一次创建的标注对象"的图元名,
- ;;怎样才能让"DIMCONTINUE"命令忽略"上一次创建的标注对象"而每次都要求进行选择?
-
- ;;; (if (= (cdr (assoc 0 (entget (entlast)))) "DIMENSION")
- ;;; (command "._DIMCONTINUE" "" ent)
- (command "._DIMCONTINUE" ent)
- ;;; (command "._DIMCONTINUE" "_S" ent)
- ;;; );;if
-
- (while (and (> (getvar "cmdactive") 0)
- (< (getvar "cmdactive") 4)
- loopmk
- );;and
- (command pause)
- (setq en1 (entlast)
- el1 (entget en1)
- );;setq
- (if (and (equal en en1)
- (member '(100 . "AcDbAlignedDimension") el)
- );;and
- (progn
- (setq p10 (cdr (assoc 10 el))
- p14 (cdr (assoc 14 el))
- );;setq
- );;progn
- (if (and (member '(100 . "AcDbAlignedDimension") el1)
- p10 p14
- );;and
- (progn
- (command "" "")
- (command "._dimedit" "O" en1 "" p14 p10) ;;调整标注的倾斜角度
- (setq en en1)
- (command "._DIMCONTINUE")
- );;progn
- );;if
- );;if
- );;while
- (setvar "cmdecho" odcmd)
- (setvar "osmode" odosm)
- (setvar "TEXTEVAL" odtva)
- (command "._undo" "_e")
- (princ)
- );;defun
|