明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1268|回复: 19

[提问] 无名块插入后(entlast),马上炸开怎么写?

  [复制链接]
发表于 2020-3-10 10:56:45 | 显示全部楼层 |阅读模式
如题:


插入无名块后(entlast)


怎么句代码紧跟上分解炸开?
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-3-10 21:10:54 | 显示全部楼层
试试这个:

(defun c:xx(/ ssx *error* ent gr i msg n qf ss)
(setq ssx (ssget"i"))

(defun *error* (msg)
(setvar "qaflags" qf)
(princ msg))

(setq qf (getvar "qaflags"))
(setvar "qaflags" 1)
(setvar 'nomutt 1)
(princ "\n 选择要分解的块或组")
(setq ss (ssget))
(setvar 'nomutt 0)
(setq n (sslength ss))
(command "undo" "be")
(setq i (- n 1))
(repeat n                               ; 先删除组
(setq ent (ssname ss i))
(setq gr (cdr (assoc 0 (entget (cdr (assoc 330 (entget ent)))))))
(if (= "GROUP" gr)
(entdel (cdr (assoc 330 (entget ent)))))
(setq i (1- i)))
(while ;再炸开嵌套块
(if (not ssx)(setq ss (ssget "p" '((0 . "insert,hatch"))))(setq ss (ssget "p" '((0 . "insert")))) )
(command ".explode" ss ""))
(setvar "qaflags" qf)
(command "undo" "e")
(princ))
回复 支持 0 反对 1

使用道具 举报

发表于 2020-3-11 13:43:29 | 显示全部楼层
试试下面这个能不能实现你的要求。也是建立无名块,插入后,炸开。
(defun greaddrag(a)
   (if (not greadss) (VL-EXIT-WITH-VALUE 0))
   (if (not greadpt0) (VL-EXIT-WITH-VALUE 0))
   (MakeUnNameBlock greadss greadpt0)
   (setq greadent (entlast))
   (setq greadsent (entget greadent) )
   (setq gr-tag T grtag T)
   (while grtag
      (setq grre (grread t 15 0))
      (setq code (car grre) snapt (cadr grre))
      (cond ((= code 3) (setq grtag nil) (command "explode" greadent) )
            ((= code 5)                     
             (redraw)
             (redraw greadent 2)
             (setq snapt (osnappt  greadent snapt))
             (entmod (setq greadsent (subst (cons 10 snapt) (assoc 10 greadsent) greadsent)))
             (redraw greadent 1)
            )
           ((member code '(11 25)) (setq grtag nil) (setq gr-tag nil) (entdel greadent) )
      )
   )
   (redraw)
   (vl-cmdf "-purge" "B" "*U*" "n")
)

点评

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=181091&page=1&extra=#pid860529  发表于 2020-3-12 16:20
我的路子代码已解决,代码还没得及实验。  发表于 2020-3-12 00:18
 楼主| 发表于 2020-3-11 11:57:24 | 显示全部楼层
669423907 发表于 2020-3-11 08:25
错误: no function definition: EN2OBJ

;;;常量定义
(setq *Acad*           (vlax-get-acad-object)
        *AcDocument* (vla-get-activedocument *Acad*)  ; 获取当前图档指针
        *Model-Space* (vla-get-modelspace *AcDocument*)
        *Paper-Space* (vla-get-PaperSpace *AcDocument*)
        pi2           (* pi 0.5)
        pi4           (* pi 0.25)
        3pi4         (* 0.75 pi)
        2pi           (* pi 2.0)
        3pi2         (* 3pi4 2.0)  ;; (* 1.5 pi)
        5pi4   (+ pi pi4)  ;;(* 1.25 pi)
        7pi4   (+ 3pi2 pi4) ;;(* 1.75 pi)
)
  • ;;返回 obj的 vla对象名-------(一级)-----------------------------------
  • (defun en2obj (object)
  •   (cond
  •     ((= (type object) 'vla-object)
  •       object
  •     )
  •     ((= (type object) 'ename)
  •       (vlax-ename->vla-object object)
  •     )
  •   )
  • )
 楼主| 发表于 2020-3-10 20:14:47 | 显示全部楼层
问题简单到不值得看来,下面代码不能爆破刚插入的无名块,应该行啊


本帖子中包含更多资源

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

x
 楼主| 发表于 2020-3-10 21:25:49 | 显示全部楼层
669423907 发表于 2020-3-10 21:10
试试这个:

(defun c:xx(/ ssx *error* ent gr i msg n qf ss)

成功的,这个行,需要改写下,不要选择了,插入就炸。
发表于 2020-3-10 22:15:50 | 显示全部楼层
在才入块的程序的后面加入
(setq ss (ssadd (entlast) (ssadd)))
(command"select"ss"")
(sssetfirst nil ss)
(c:xx)
 楼主| 发表于 2020-3-10 22:22:31 | 显示全部楼层
本帖最后由 尘缘一生 于 2020-3-10 22:34 编辑
669423907 发表于 2020-3-10 22:15
在才入块的程序的后面加入
(setq ss (ssadd (entlast) (ssadd)))
(command"select"ss"")

我发个程序,你帮忙看看,怎么无名块跟着炸开。这个程序很有用,就是选择,跟随鼠标移动函数,用无名块,可是移动后还是个块,非常恶心。






本帖子中包含更多资源

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

x
发表于 2020-3-10 22:30:16 | 显示全部楼层
no function definition: SL:-ERASE
少 SL:-ERASE

点评

发上了,忘了加上  发表于 2020-3-10 22:34
发表于 2020-3-10 22:39:51 | 显示全部楼层
少 SS-ENLST

你试试在插入块后加入:
(while(=(getvar "cmdactive")1)(command"\\")) ;命令结束后,继续往下执行
(setq ss (ssadd (entlast) (ssadd)))
(command"select"ss"")
(sssetfirst nil ss)
(c:xx)
 楼主| 发表于 2020-3-10 22:44:50 | 显示全部楼层
本帖最后由 尘缘一生 于 2020-3-10 22:58 编辑
669423907 发表于 2020-3-10 22:39
少 SS-ENLST

你试试在插入块后加入:

还是不行,我觉得是提前中断了,我整理下发上,问题应该是出在 sldomov 的前面部分


本帖子中包含更多资源

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

x
 楼主| 发表于 2020-3-10 22:56:31 | 显示全部楼层
669423907 发表于 2020-3-10 22:39
少 SS-ENLST

你试试在插入块后加入:
又丢了

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-11-15 14:31 , Processed in 0.206047 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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