让放大图的块可以分解,炸开
这是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->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)) yoyoho 发表于 2015-10-26 17:53 static/image/common/back.gif
;;;补上制作时间块
;;;*************函数 gxl-blk-Tmblockbase.lsp*************
;;(gxl-BLK-TMBlockBa ...
感谢帮忙,
块是时间命名的了,但还是不能炸开,分解
麻烦再出手下 ;;请先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)
) yoyoho 发表于 2015-10-27 07:06 static/image/common/back.gif
;;请先COPY一个时间块到旁边,用bscc.LSP将时间块炸成原有比例,待修改完成后,再用原有时间名建立成时间块,并 ...
这样弄,多了好几步哦,用X分解没办法直接弄开了吗?
前面那个改成时间块了,可以块编辑了。就差X不能直接分解了 琴剑江山_10184 发表于 2015-10-27 08:33
这样弄,多了好几步哦,用X分解没办法直接弄开了吗?
前面那个改成时间块了,可以块编辑了。就差X不能直 ...
请问楼主解决了吗? 琴剑江山_10184 发表于 2015-10-27 08:33
这样弄,多了好几步哦,用X分解没办法直接弄开了吗?
前面那个改成时间块了,可以块编辑了。就差X不能直 ...
请问楼主解决了吗? 非常有用!感谢啊 感谢~!
应该是匿名块的原因吧~
得转为普通块分解。 看来解决了没有
页:
[1]
2