- 积分
- 4695
- 明经币
- 个
- 注册时间
- 2007-10-17
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
5明经币
本帖最后由 zag0666 于 2013-6-4 11:00 编辑
以下是坛友帮我写的一个程序目的是 对齐和线性标注的
时候可以控制尺寸界线长度的统一。
如附件我开的捕捉设置,进行 选择点的时候,选择 两点之间的中点
进行标注的时候,会出错,捕捉的不是两点之间的中点。
而系统自带的标注功能,同样的捕捉设置就不会出错。
好似程序缺了什么似的,如果我先用系统自带的标注 他后标注就不出错
如果先用程序标注就会出错,但 系统的依然正确
他好似直接找到了 ,而不是在我选的两点找中点
大大们能否帮忙看看?
;;;━━━━━━━━━━━━━━
(defun newerr(msg)
(command)
(command)
(setq *error* olderr)
(command "_.undo" "_e")
(setvar "cmdecho" 1)
)
(defun start()
(setvar "cmdecho" 0)
(setq olderr *error* *error* newerr)
(command "_.undo" "_be")
(initget 1)
(setq pt01 (getpoint "\n指定第一点:"))
)
(defun c:1(/ pt01 pt02 pt03 pt04 en data ang olderr)(Command "osmode" "7607" ) (setvar "clayer" "标注")
(start)
(command "_.dimlinear" pt01 (progn (princ "\n指定下一点:") pause)
(progn (setq pt03 (getpoint "\n指定尺寸线参考点<空格取消指定>:"))(princ "\n指定位置:") pause)
)
(while (= (logand (getvar "CmdActive") 1) 1)
(command pause)
)
(setq en (entlast) data (entget en))
(if pt03
(progn
(setq pt04 (cdr (assoc 10 data)))
(setq pt02 (cdr (assoc 14 data)))
(setq ang (angle pt02 pt04))
(setq pt03 (polar pt03 ang 5))
(if (or (equal ang 0 0.001)(equal ang pi 0.001)(equal ang (* 2 pi) 0.001))
(setq pt04 (cons (car pt03)(cdr pt04)))
(setq pt04 (list (car pt04)(cadr pt03)(last pt04)))
)
(setq data (subst (cons 10 pt04) (assoc 10 data) data))
(entmod data)
)
)
(newerr nil)
(princ)
)
(defun c:2(/ pt01 pt02 pt03 pt04 en data ang olderr)(Command "osmode" "7607" ) (setvar "clayer" "标注")
(start)
(command "_.dimaligned" pt01 (progn (princ "\n指定下一点:") pause)
(progn (setq pt03 (getpoint "\n指定尺寸线参考点<空格取消指定>:"))(princ "\n指定位置:") pause)
)
(while (= (logand (getvar "CmdActive") 1) 1)
(command pause)
)
(setq en (entlast) data (entget en))
(if pt03
(progn
(setq pt04 (cdr (assoc 10 data)))
(setq pt02 (cdr (assoc 14 data)))
(setq ang (angle pt02 pt04))
(setq pt04 (polar pt03 ang 5))
(setq data (subst (cons 10 pt04) (assoc 10 data) data))
(entmod data)
)
)
(newerr nil)
(princ)
)
|
附件: 您需要 登录 才可以下载或查看,没有账号?注册
|