lohas1118 发表于 2011-10-27 11:27:31

快速制块程序请大家指导修改。

;快速制块程序
(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 )
)

lohas1118 发表于 2011-10-27 11:28:18

不知道那里出了问题,不能用。请高手指点。

xyh 发表于 2011-10-27 12:26:59

本帖最后由 xyh 于 2011-10-27 12:29 编辑

;(start00)
(setq osnap1 (getvar "osmode"))
start00未定义,注释掉
加一句(setq osnap1 (getvar "osmode"))
执行时选择好后鼠标要点一下

lohas1118 发表于 2011-10-28 10:10:25

xyh 发表于 2011-10-27 12:26 static/image/common/back.gif
;(start00)
(setq osnap1 (getvar "osmode"))
start00未定义,注释掉


谢谢,试过了,但还是不行。

10410024 发表于 2011-10-28 12:04:53

lohas1118 发表于 2011-10-29 15:54:01

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
命令:

输入命令时偶尔出出现此问题,请问该如何修改解决此现象呢。谢谢

xyh 发表于 2011-10-31 12:51:45

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 )
)

lohas1118 发表于 2011-11-1 13:33:18

xyh 发表于 2011-10-31 12:51 static/image/common/back.gif
;快速制块程序
(defun c:oo ()
;(start00)          ;;;本行注释掉


非常感谢,修改后,很好用。

lohas1118 发表于 2011-11-2 09:35:31

crazylsp 发表于 2011-11-2 21:37:38

(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
查看完整版本: 快速制块程序请大家指导修改。