快速制块程序请大家指导修改。
;快速制块程序(defun c:oo ()
(start00)
(setvar "osmode" 0)
(setq sel (ssget))
(setq poin (cdr (assoc 10 (entget (ssname sel0)))) )
(setq qqqq (cadr (grread)))
(setq qqqqy (itoa (fix (abs (* 10000 (cadr qqqq))))))
(setq qqqqx (itoa (fix (abs (* 10000 (car qqqq))))))
(setq qqqq (strcat qqqqx qqqqy))
(setq ww qqqq)
(setq bqqqq (strcat "b" qqqq))
(if (null qqqq) (setq qqqq 1))
(setq k 1)
(while (< k 5)
(if (tblsearch "block" bqqqq)
(progn
(setq qqqq (+ 1 qqqq))
(setq bqqqq (strcat "b" qqqq))
);progn
(setq k 10));if
);while
;(ssget)
;(command "chprop" "p" "" "c" "byblock" "")
(command "block" bqqqq poin "p" "")
;(command "color" "byblock" )
(command "insert" bqqqq poin "" "" "")
;(command "color" "bylayer")
;(command "chprop" "l" "" "c" "byblock" "")
(setvar "osmode" osnap1)
(setq k nil)
(setq qqqq nil poin nil qqqqx nil qqqqy nil bqqqq nil)
(command "_.UNDO" "_E")
(princ )
)
不知道那里出了问题,不能用。请高手指点。 本帖最后由 xyh 于 2011-10-27 12:29 编辑
;(start00)
(setq osnap1 (getvar "osmode"))
start00未定义,注释掉
加一句(setq osnap1 (getvar "osmode"))
执行时选择好后鼠标要点一下
xyh 发表于 2011-10-27 12:26 static/image/common/back.gif
;(start00)
(setq osnap1 (getvar "osmode"))
start00未定义,注释掉
谢谢,试过了,但还是不行。 xyh 发表于 2011-10-27 12:26 static/image/common/back.gif
;(start00)
(setq osnap1 (getvar "osmode"))
start00未定义,注释掉
命令: oo
选择对象: 找到 1 个
选择对象: 指定对角点: 找到 6 个 (1 个重复),总计 6 个
选择对象:
Error: AutoCAD 变量设置被拒绝: "osmode" nil
命令:
输入命令时偶尔出出现此问题,请问该如何修改解决此现象呢。谢谢 lohas1118 发表于 2011-10-29 15:54 static/image/common/back.gif
命令: oo
选择对象: 找到 1 个
;快速制块程序
(defun c:oo ()
;(start00) ;;;本行注释掉
(setq osnap1 (getvar "osmode")) ;;;本行新增
(setvar "osmode" 0)
(setq sel (ssget))
(setq poin (cdr (assoc 10 (entget (ssname sel0)))) )
(setq qqqq (cadr (grread)))
(setq qqqqy (itoa (fix (abs (* 10000 (cadr qqqq))))))
(setq qqqqx (itoa (fix (abs (* 10000 (car qqqq))))))
(setq qqqq (strcat qqqqx qqqqy))
(setq ww qqqq)
(setq bqqqq (strcat "b" qqqq))
(if (null qqqq) (setq qqqq 1))
(setq k 1)
(while (< k 5)
(if (tblsearch "block" bqqqq)
(progn
(setq qqqq (+ 1 qqqq))
(setq bqqqq (strcat "b" qqqq))
);progn
(setq k 10));if
);while
;(ssget)
;(command "chprop" "p" "" "c" "byblock" "")
(command "block" bqqqq poin "p" "")
;(command "color" "byblock" )
(command "insert" bqqqq poin "" "" "")
;(command "color" "bylayer")
;(command "chprop" "l" "" "c" "byblock" "")
(setvar "osmode" osnap1)
(setq k nil)
(setq qqqq nil poin nil qqqqx nil qqqqy nil bqqqq nil)
(command "_.UNDO" "_E")
(princ )
)
xyh 发表于 2011-10-31 12:51 static/image/common/back.gif
;快速制块程序
(defun c:oo ()
;(start00) ;;;本行注释掉
非常感谢,修改后,很好用。 (defun c:oo ()
(command "_.UNDO" "_Begin")
(setq osnap1 (getvar "osmode"))
(setvar "osmode" 0)
(command "color" "byblock" ) ;;颜色随块
;(command "color" "bylayer" ) ;;颜色随层
(setq sel (ssget)
len (sslength sel)
k 0
qqqq(cadr (grread))
)
(while (<= k len)
(if (null qqqq) (setq qqqq (list 0.0 0.0)) )
(setq poin(cdr (assoc 10 (entget (ssname sel k)))) );;图元起点
(setq qqqqy (itoa (fix (abs(* 10000 (cadr qqqq)))))) ;;动点纵坐标
(setq qqqqx (itoa (fix (abs(* 10000(carqqqq)))))) ;;动点横坐标
(setq bqqqq(strcat qqqqx" "qqqqy)) ;;动点纵横坐标组合
(setq b1st (strcat "b" bqqqq " " (itoa k))) ;;坐标组合前面加“b”
(command "-block" b1st poin (ssname sel k) "")
;(if(tblsearch "block" b1st ) ;;寻找 坐标组合前面加“b”的当前块
(command "insert" b1st poin "" "" "") ;;插入块
;)
(command "chprop" "l" "" "c" "byblock" "");;最后图元颜色随块
;(command "chprop" "l" "" "c" "byblock" "");;最后图元颜色随层
(setq k (1+ k))
);while
(setvar "osmode" osnap1) ;;还原捕捉
(setvar "osmode" 1)
(command "_.UNDO" "End")
(princ )
)
页:
[1]
2