琴剑江山_10184 发表于 2015-10-26 09:30

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

这是G版的局部放大功能,速度快,且有拖动效果。
就是放大后的成块了,这个块又不能炸开,也不能分解。
忘高手出手改下,让快可以分解,炸开。谢谢
应该很多人要用上。





yoyoho 发表于 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))   

琴剑江山_10184 发表于 2015-10-26 19:02

yoyoho 发表于 2015-10-26 17:53 static/image/common/back.gif
;;;补上制作时间块
;;;*************函数 gxl-blk-Tmblockbase.lsp*************
;;(gxl-BLK-TMBlockBa ...

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

yoyoho 发表于 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)
)

琴剑江山_10184 发表于 2015-10-27 08:33

yoyoho 发表于 2015-10-27 07:06 static/image/common/back.gif
;;请先COPY一个时间块到旁边,用bscc.LSP将时间块炸成原有比例,待修改完成后,再用原有时间名建立成时间块,并 ...

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

3625095 发表于 2020-1-19 12:09

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

请问楼主解决了吗?

3625095 发表于 2020-1-19 12:13

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

请问楼主解决了吗?

zmzk 发表于 2020-7-15 18:29

非常有用!感谢啊

zhangrunze 发表于 2024-3-25 10:02

感谢~!
应该是匿名块的原因吧~
得转为普通块分解。
页: [1]
查看完整版本: 让放大图的块可以分解,炸开