明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2460|回复: 14

[讨论] 想选取图层名称 然后框选选择固定图层的图形做块

[复制链接]
发表于 2021-11-9 10:20:02 | 显示全部楼层 |阅读模式
1明经币
根据社区大佬的源码,结合e派工具箱大佬的帮助  可以实现在固定图层上框选图形做块并输入块名了。   但是不知道这么实现 吧这个固定图层变成可以图中选择的图层  以及  将两个图层的图形做块  求大佬帮助
(defun c:KS1 ()
  (prompt "\n请选择加入块的对象: ")
  (setq ss1 (ssget (list (cons 8 "S-ANNO-TEXT"))))
  (princ "\n选择基点: ")
  (setq p(getpoint))
  (setq x2(getstring "\请输入块名:"))
  (command "_block" x2 p ss1 "")
  (command "_insert" x2 p "" "" "")
  (princ)
)

最佳答案

查看完整内容

(defun c:KS1 () (prompt "\n请选择加入块的对象: ") (setq ss1 (ssget (list (cons 8 "S-ANNO-TEXT")))) (princ "\n选择基点: ") (setq p (getpoint)) (setq x2(getstring "\请输入块名:")) (emkblk ss1 p x2) (princ) ) (defun emkblk (ss pt name / i) (entmake (list '(0 . "block") (cons 2 name) '(70 . 0) (cons 10 pt))) (repeat (setq i (sslength ss)) (entmake (cdr (entget (ssname ...
发表于 2021-11-9 10:20:03 | 显示全部楼层
(defun c:KS1 ()
  (prompt "\n请选择加入块的对象: ")
  (setq ss1 (ssget (list (cons 8 "S-ANNO-TEXT"))))
  (princ "\n选择基点: ")
  (setq p (getpoint))
  (setq x2(getstring "\请输入块名:"))
(emkblk ss1 p x2)
  (princ)
)


(defun emkblk (ss pt name / i)
  (entmake (list '(0 . "block") (cons 2 name) '(70 . 0) (cons 10 pt)))
  (repeat (setq i (sslength ss))    (entmake (cdr (entget (ssname ss (setq i (1- i))))))  )
  (entmake '((0 . "ENDBLK")))
  (command "_.erase" ss "")
  (entmake (list '(0 . "INSERT") (cons 2 name) (cons 10 pt)))
)
回复

使用道具 举报

发表于 2021-11-9 11:44:01 | 显示全部楼层
本帖最后由 fangmin723 于 2021-11-10 13:24 编辑

(defun c:KS1 ()
  (setq laystr (getstring "\n请输入需要加入块的图层名(多个请用英文逗号隔开):"))
  (if (= laystr "") (setq laystr "S-ANNO-TEXT"))
  (prompt "\n请选择加入块的对象: ")
  (setq ss1 (ssget (list (cons 8 laystr))))
  (princ "\n选择基点: ")
  (setq p(getpoint))
  (setq x2(getstring "\请输入块名:"))
  (command "_block" x2 p ss1 "")
  (command "_insert" x2 p "" "" "")
  (princ)
)
(defun c:KS1 (/ ent lay laystr n p ss ss1 strlst x2)
        (prompt "n请选择要加入块中图层的图元: ")
        (setq n -1 laystr "" strlst '() ss (ssget))
        (while (setq ent (ssname ss (setq n (1+ n))))
                (if (not (vl-position (setq lay (cdr (assoc 8 (entget ent)))) strlst))
                        (setq laystr (strcat laystr lay ",") strlst (append strlst (list lay)))
                )
        )
        (if (= laystr "") (setq laystr "S-ANNO-TEXT"))
        (prompt "n请选择加入块的对象: ")
        (setq ss1 (ssget (list (cons 8 (vl-string-trim "," laystr)))))
        (setq p (getpoint "\n选择基点: "))
        (setq x2 (getstring "\n请输入块名:"))
        (command "_block" x2 p ss1 "")
        (command "_insert" x2 p " "" ")
        (princ)
)


回复

使用道具 举报

 楼主| 发表于 2021-11-9 14:50:12 | 显示全部楼层
fangmin723 发表于 2021-11-9 11:44
(defun c:KS1 ()
  (setq laystr (getstring "\n请输入需要加入块的图层名(多个请用英文逗号隔开):"))
  ...

首先特别感谢大佬的帮助,两个程序都是可以用的  还有就是 我想实现的是点选图层的时候  选两个图层或者多个图层也能框选做块可以吗  或者说  在第一个程序里内置上图层  然后可选择   其实我是想实现批量写块的功能  这样做参照时候不需要一个个层显了  现在不会弄就只有曲线救国 先按照图层做块  再把块全部写入一个文件夹   再次感谢大佬
回复

使用道具 举报

发表于 2021-11-9 15:00:09 | 显示全部楼层
昊翰鲲鹏 发表于 2021-11-9 14:50
首先特别感谢大佬的帮助,两个程序都是可以用的  还有就是 我想实现的是点选图层的时候  选两个图层或者 ...

没理解你的意思,最好图文说明下
回复

使用道具 举报

 楼主| 发表于 2021-11-9 15:08:17 | 显示全部楼层
fangmin723 发表于 2021-11-9 15:00
没理解你的意思,最好图文说明下

您改发的第二个代码 不是实现了  点选一个图层  然后框选做块了吗  但是 我点两个不同图层时候  就不能做块了  能不能实现我点两个图层或者三个图层时候  也能做块啊
回复

使用道具 举报

 楼主| 发表于 2021-11-9 15:31:03 | 显示全部楼层
sniper1111 发表于 2021-11-9 15:24
(defun c:KS1 ()
  (prompt "\n请选择加入块的对象: ")
  (setq ss1 (ssget (list (cons 8 "S-ANNO-TEXT" ...

感谢大佬  我试了您这个程序  后面entmake的过程没有执行 不知道是为什么  只执行了上面的代码  只能选择上面那个固定图层的图元
回复

使用道具 举报

发表于 2021-11-9 16:07:42 | 显示全部楼层
昊翰鲲鹏 发表于 2021-11-9 15:08
您改发的第二个代码 不是实现了  点选一个图层  然后框选做块了吗  但是 我点两个不同图层时候  就不能做 ...

可以的啊,我都试过了
回复

使用道具 举报

发表于 2021-11-9 16:09:16 | 显示全部楼层
本帖最后由 fangmin723 于 2021-11-10 13:25 编辑
昊翰鲲鹏 发表于 2021-11-9 15:08
您改发的第二个代码 不是实现了  点选一个图层  然后框选做块了吗  但是 我点两个不同图层时候  就不能做 ...

我的第二个代码不是点选,而是框选

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 2021-11-9 16:39:35 | 显示全部楼层
fangmin723 发表于 2021-11-9 16:09
我的第二个代码不是点选,而是框选,第一次选择你可以选择好几个不同图层的图元试试!第二次才是选择你需 ...

明白了明白了 万分感谢大佬给小弟指点迷津
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 06:50 , Processed in 0.177671 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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