明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 963|回复: 11

[提问] 是否有办法在一个文件的同名块中,快速描一条当前层或自定义层的PL多义线?(已解决)

[复制链接]
发表于 2020-12-28 18:11:30 | 显示全部楼层 |阅读模式
本帖最后由 chenry676 于 2021-12-30 10:44 编辑

作者能再帮帮我妈?目前是提示找不到图层_TITLE。错误函数被取消,因为本文件原来没有_TITLE层,在没有_TITLE图层的情况下,能否自动新建一个_TITLE层,也就是有该图层就自动归属到该图层,无该图层自动新建并归属到该图层,十分感谢!
以下为作者start4444帮我写的代码:


增加图层切换健 q
(defun c:tt5 (/ bname en ent entname i p1 p2 ss tt)
        (vl-load-com)
        (command "undo" "be")      
        (setvar "cmdecho" 0)
        (if (null key ) (setq key 1))
        (setq tt t)
        (while tt
                (initget "Q")
                (setq ent (entsel (strcat"\n选择图框<"(if (= key 1) "_TITLE" "当前层")">[切换(Q)]:")))
                (if (= ent "Q") (setq key (if (= key 1) 2 1)) (setq tt nil)))
        (setq entname (car ent)        bname (cdr (assoc 2 (entget entname))) ss (ssget "X" (list '(0 . "INSERT") (cons 2 bname))) i -1)
        (while (setq en (ssname ss (setq i (1+ i))))
                (setq  p1 (car (enbox en)) p2 (cadr (enbox en)))
                (if (= key 1) (command "RECTANG" "non" p1 "non" p2  "CHANGE" (entlast) "" "p" "c" 1  "p" "la" "_TITLE" "") (command "RECTANG" "non" p1 "non" p2  "CHANGE" (entlast) "" "p" "c" 1 ""))
        )      
        (setvar "cmdecho" 1)
        (command "undo" "e")
        (princ)        
)
(defun enbox (ename / ll ur)
  (vla-getboundingbox (vlax-ename->vla-object ename) 'll 'ur)
  (mapcar 'vlax-safearray->list (list ll ur))
)
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-12-28 19:06:35 | 显示全部楼层
应该是这样吧
(defun c:tt5 (/ bname en entname i p1 p2 ss);;;;;图框块加外框线
        (command "undo" "be")       
        (setq entname (car (entsel "\n选择图框:")) bname (cdr (assoc 2 (entget entname))) ss (ssget "X" (list '(0 . "INSERT") (cons 2 bname))))
        (while (setq en (ssname ss (setq i (1+ i))))
                (setq  p1 (car (enbox en)) p2 (cadr (enbox en)))
                (command "RECTANG" "non" p1 "non" p2)
        )
        (command "undo" "e")
        (princ)       
)
(defun enbox (ename / ll ur)
  (vla-getboundingbox (vlax-ename->vla-object ename) 'll 'ur)
  (mapcar 'vlax-safearray->list (list ll ur))
)
 楼主| 发表于 2020-12-28 20:05:55 | 显示全部楼层
我这边显示参数类型错误。

点评

前面加 (vl-load-com)  发表于 2020-12-28 21:29
发表于 2020-12-28 20:12:37 来自手机 | 显示全部楼层
其实没有必要存在这个程序
 楼主| 发表于 2020-12-29 08:14:05 | 显示全部楼层
start4444 发表于 2020-12-28 19:06
应该是这样吧
(defun c:tt5 (/ bname en entname i p1 p2 ss);;;;;图框块加外框线
        (command "undo" "be" ...

前面加了您的代码,还是提示参数类型错误,能否帮我完整稍微整理一下?谢谢!
发表于 2020-12-29 09:57:54 | 显示全部楼层
本帖最后由 start4444 于 2021-1-5 16:59 编辑

增加图层切换健 q
(defun c:tt5 (/ bname en ent entname i p1 p2 ss tt)
        (vl-load-com)
        (command "undo" "be")       
        (setvar "cmdecho" 0)
        (if (null key ) (setq key 1))
        (setq tt t)
        (while tt
                (initget "Q")
                (setq ent (entsel (strcat"\n选择图框<"(if (= key 1) "_TITLE" "当前层")">[切换(Q)]:")))
                (if (= ent "Q") (setq key (if (= key 1) 2 1)) (setq tt nil)))
        (setq entname (car ent)        bname (cdr (assoc 2 (entget entname))) ss (ssget "X" (list '(0 . "INSERT") (cons 2 bname))) i -1)
        (while (setq en (ssname ss (setq i (1+ i))))
                (setq  p1 (car (enbox en)) p2 (cadr (enbox en)))
                (if (= key 1) (command "RECTANG" "non" p1 "non" p2  "CHANGE" (entlast) "" "p" "c" 1  "p" "la" "_TITLE" "") (command "RECTANG" "non" p1 "non" p2  "CHANGE" (entlast) "" "p" "c" 1 ""))
        )       
        (setvar "cmdecho" 1)
        (command "undo" "e")
        (princ)        
)
(defun enbox (ename / ll ur)
  (vla-getboundingbox (vlax-ename->vla-object ename) 'll 'ur)
  (mapcar 'vlax-safearray->list (list ll ur))
)

 楼主| 发表于 2020-12-29 10:28:47 | 显示全部楼层
start4444 发表于 2020-12-29 09:57
漏了i
(defun c:tt5 (/ bname en entname i p1 p2 ss)
        (vl-load-com)

非常感谢start4444,我正需要这种功能!
 楼主| 发表于 2020-12-29 14:43:06 | 显示全部楼层
能否帮我增加一个选择功能项,并为记忆模式,就是描出来的线自动为“_TITLE”层,且为1号红色线,因为这个基本是描图框用的,另一个选项就是目前的当前层。可以为记忆模式,上一次使用什么选项,这次就是默认什么选项,谢谢!
 楼主| 发表于 2021-1-4 20:54:02 | 显示全部楼层
start4444 发表于 2020-12-29 09:57
漏了i
(defun c:tt5 (/ bname en entname i p1 p2 ss)
        (vl-load-com)

能否帮我增加以上功能?谢谢!

点评

6楼已经更新  发表于 2021-1-5 17:00
 楼主| 发表于 2021-1-5 20:02:05 | 显示全部楼层
本帖最后由 chenry676 于 2021-1-9 18:06 编辑
start4444 发表于 2020-12-29 09:57
增加图层切换健 q
(defun c:tt5 (/ bname en ent entname i p1 p2 ss tt)
        (vl-load-com)

目前是提示找不到图层_TITLE。错误函数被取消,因为本文件原来没有_TITLE层,在没有_TITLE图层的情况下,能否自动新建一个_TITLE层,也就是有该图层就自动归属到该图层,无该图层自动新建并归属到该图层,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-17 08:23 , Processed in 0.167171 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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