明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2598|回复: 15

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

  [复制链接]
发表于 2011-10-27 11:27:31 | 显示全部楼层 |阅读模式
;快速制块程序
(defun c:oo ()
(start00)
(setvar "osmode" 0)
(setq sel (ssget))
(setq poin (cdr (assoc 10 (entget (ssname sel  0)))) )
(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 )
)
 楼主| 发表于 2011-10-27 11:28:18 | 显示全部楼层
不知道那里出了问题,不能用。请高手指点。
发表于 2011-10-27 12:26:59 | 显示全部楼层
本帖最后由 xyh 于 2011-10-27 12:29 编辑

;(start00)
(setq osnap1 (getvar "osmode"))
start00未定义,注释掉
加一句(setq osnap1 (getvar "osmode"))
执行时选择好后鼠标要点一下
 楼主| 发表于 2011-10-28 10:10:25 | 显示全部楼层
xyh 发表于 2011-10-27 12:26
;(start00)
(setq osnap1 (getvar "osmode"))
start00未定义,注释掉

谢谢,试过了,但还是不行。
发表于 2011-10-28 12:04:53 | 显示全部楼层

评分

参与人数 1明经币 +1 收起 理由
yan19851204 + 1

查看全部评分

 楼主| 发表于 2011-10-29 15:54:01 | 显示全部楼层
xyh 发表于 2011-10-27 12:26
;(start00)
(setq osnap1 (getvar "osmode"))
start00未定义,注释掉

命令: oo
选择对象: 找到 1 个

选择对象: 指定对角点: 找到 6 个 (1 个重复),总计 6 个

选择对象:
Error: AutoCAD 变量设置被拒绝: "osmode" nil
命令:

输入命令时偶尔出出现此问题,请问该如何修改解决此现象呢。谢谢
发表于 2011-10-31 12:51:45 | 显示全部楼层
lohas1118 发表于 2011-10-29 15:54
命令: oo
选择对象: 找到 1 个

;快速制块程序
(defun c:oo ()
;(start00)          ;;;本行注释掉
(setq osnap1 (getvar "osmode"))          ;;;本行新增
(setvar "osmode" 0)
(setq sel (ssget))
(setq poin (cdr (assoc 10 (entget (ssname sel  0)))) )
(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 )
)
 楼主| 发表于 2011-11-1 13:33:18 | 显示全部楼层
xyh 发表于 2011-10-31 12:51
;快速制块程序
(defun c:oo ()
;(start00)          ;;;本行注释掉

非常感谢,修改后,很好用。
 楼主| 发表于 2011-11-2 09:35:31 | 显示全部楼层
发表于 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(car  qqqq))))))    ;;动点横坐标
    (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 )
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-7-22 05:08 , Processed in 0.188232 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表