明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1828|回复: 8

让放大图的块可以分解,炸开

[复制链接]
发表于 2015-10-26 09:30 | 显示全部楼层 |阅读模式
3明经币
这是G版的局部放大功能,速度快,且有拖动效果。
就是放大后的成块了,这个块又不能炸开,也不能分解。
忘高手出手改下,让快可以分解,炸开。谢谢
应该很多人要用上。





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

最佳答案

查看完整内容

;;;补上制作时间块 ;;;*************函数 gxl-blk-Tmblockbase.lsp ************* ;;(gxl-BLK-TMBlockBase ss base) 制作时间块,base 为图块基点 或 0 = 中心 1 = 左下 2 = 右下 3 = 右上 4 = 左上 ,默认值为0 (defun gxl-BLK-TMBlockBase (ss base / obj blkName obj1 cp) (if (> (sslength ss) 0) (progn (setq blkName (rtos (* (getvar "CDATE") 1E8))) ;(setq blkName "*U") (setq ss (gxl-Sel-SS-> ...
发表于 2015-10-26 09:30 | 显示全部楼层
;;;补上制作时间块
;;;*************函数 gxl-blk-Tmblockbase.lsp  *************
;;(gxl-BLK-TMBlockBase ss base) 制作时间块,base 为图块基点 或 0 = 中心 1 = 左下 2 = 右下 3 = 右上 4 = 左上 ,默认值为0
(defun gxl-BLK-TMBlockBase (ss base / obj blkName obj1 cp)
  (if (> (sslength ss) 0)
    (progn
    (setq blkName (rtos (* (getvar "CDATE") 1E8)))
  ;(setq blkName "*U")
  (setq ss (gxl-Sel-SS->AX:Array ss))
  (setq obj (gxl-AX:AddBlock '(0 0 0) blkName))
  (vla-CopyObjects *AcDocument* ss obj)
  (foreach ent (vlax-safearray->list ss)
    (VL-CATCH-ALL-APPLY 'vla-Delete (list ent))
  ) ;_ foreach
  (setq obj1 (gxl-AX:MInsertBlock '(0 0 0) (vla-get-name obj) 1 1 1 0 1 1 0 0))
    ;;计算基点
  (cond
    ((= 'list (type base))
     (setq cp base)
     )
    ((or (null base)
         (= 0 base)
         )
     (vla-GetBoundingBox obj1 'll 'ur)
     (setq ll (vlax-safearray->list ll)
           ur (vlax-safearray->list ur)
           )
     (setq cp (gxl-MIDPOINT ll ur))
     )
    ((= 1 base)
     (vla-GetBoundingBox obj1 'll 'ur)
     (setq ll (vlax-safearray->list ll)
           ;ur (vlax-safearray->list ur)
           )
     (setq cp ll)
     )
    ((= 2 base)
     (vla-GetBoundingBox obj1 'll 'ur)
     (setq ll (vlax-safearray->list ll)
           ur (vlax-safearray->list ur)
           )
     (setq cp (list (car ur) (cadr ll) 0))
     )
    ((= 3 base)
     (vla-GetBoundingBox obj1 'll 'ur)
     (setq ;ll (vlax-safearray->list ll)
           ur (vlax-safearray->list ur)
           )
     (setq cp ur)
     )
    ((= 4 base)
     (vla-GetBoundingBox obj1 'll 'ur)
     (setq ll (vlax-safearray->list ll)
           ur (vlax-safearray->list ur)
           )
     (setq cp (list (car ll) (cadr ur) 0))
     )
    )
  ;;修改图块基点
  (vla-put-Origin obj (vlax-3d-point cp))
  (vla-move obj1 (vlax-3d-point '(0 0 0)) (vlax-3d-point cp))
  obj1
  )
    )
)
;;;***************** 函数 gxl-BLK-TMBlockBase*****************


;;;修改下面
  ;(setq unblk (gxl-BLK-UnMBlockBase ss cp))  
  (setq unblk (gxl-BLK-TMBlockBase ss cp))   
回复

使用道具 举报

 楼主| 发表于 2015-10-26 19:02 | 显示全部楼层
yoyoho 发表于 2015-10-26 17:53
;;;补上制作时间块
;;;*************函数 gxl-blk-Tmblockbase.lsp  *************
;;(gxl-BLK-TMBlockBa ...

感谢帮忙,
块是时间命名的了,但还是不能炸开,分解
麻烦再出手下
回复

使用道具 举报

发表于 2015-10-27 07:06 | 显示全部楼层
;;请先COPY一个时间块到旁边,用bscc.LSP将时间块炸成原有比例,待修改完成后,再用原有时间名建立成时间块,并配合原有时间块的相对插入点
(defun c:bscc (/ TYPE_01) ;(/ ent pt1 PT1 pt3 PTX ent1)
   (command "osnap" "endp,mid,int,cen")   ;;;设定抓端点,中点,交点,圆中心
          (SETQ DIMPX 1)
          (SETQ DIMPY 1)
          (SETQ DIMPZ 1)

          (setq ss(ssget)) ;选择输入字串图元集给ss
          (setq ent (entget (ssname ss 0)))

          (setq n (sslength ss)) ;取得ss所含图元个数
          (setq index 0) ;计数器归0
          (repeat n
            (SETQ ENT_B (ssname ss index))
            (setq ent (entget ENT_B))
                            ;取出第index个字串的描述串列置于ent变数
            (setq index (+ 1 index)) ;处理一个字串index就加1
            (setq TYPE_01 (assoc 0 ent)) ;查看ent图元是否为字串
            (if (= "INSERT" (cdr TYPE_01)) ;若是
               (progn                    ;则
                   (setq PT1 DIMPX)
                   (setq PT2 DIMPY)
                   (setq PT3 DIMPZ)

                   (setq PTX PT1 )
                   (setq PTY PT2 )
                   (setq PTZ PT3 )

                        (setq ent1 (subst (cons 41 PTX) (assoc 41 ent) ent))
                        (entmod ent1) ;更新图形资料库中该线段的资料

                        (setq ent2 (subst (cons 42 PTY) (assoc 42 ent) ent1))
                        (entmod ent2) ;更新图形资料库中该线段的资料


                        (setq ent3 (subst (cons 43 PTZ) (assoc 43 ent) ent2))
                        (entmod ent3) ;更新图形资料库中该线段的资料
               (COMMAND "EXPLODE" ENT_B)
               )
               
            )
          )
(princ)
)
回复

使用道具 举报

 楼主| 发表于 2015-10-27 08:33 | 显示全部楼层
yoyoho 发表于 2015-10-27 07:06
;;请先COPY一个时间块到旁边,用bscc.LSP将时间块炸成原有比例,待修改完成后,再用原有时间名建立成时间块,并 ...

这样弄,多了好几步哦,用X分解没办法直接弄开了吗?
前面那个改成时间块了,可以块编辑了。就差X不能直接分解了
回复

使用道具 举报

发表于 2020-1-19 12:09 | 显示全部楼层
琴剑江山_10184 发表于 2015-10-27 08:33
这样弄,多了好几步哦,用X分解没办法直接弄开了吗?
前面那个改成时间块了,可以块编辑了。就差X不能直 ...

请问楼主解决了吗?
回复

使用道具 举报

发表于 2020-1-19 12:13 | 显示全部楼层
琴剑江山_10184 发表于 2015-10-27 08:33
这样弄,多了好几步哦,用X分解没办法直接弄开了吗?
前面那个改成时间块了,可以块编辑了。就差X不能直 ...

请问楼主解决了吗?
回复

使用道具 举报

发表于 2020-7-15 18:29 | 显示全部楼层
非常有用!感谢啊
回复

使用道具 举报

发表于 2024-3-25 10:02 | 显示全部楼层
感谢~!
应该是匿名块的原因吧~
得转为普通块分解。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 12:03 , Processed in 0.332905 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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