本帖最后由 gaics 于 2020-4-16 13:22 编辑
 - (defun c:tt (/ ss i ii blk blkname pattern1 pattern2 ly keyword namelist) (princ "\n >>>>>1-请选择块参照...")
- (setq ss (ssget '((0 . "INSERT"))))
- (princ "\n >>>>>2-请选择原填充图案...")
- (setq pattern1 (cdr (assoc 2 (entget (car (nentselp))))))
- (princ "\n >>>>>3-请选择新填充图案...")
- (setq pattern2 (car (nentselp)))
- (setq ly (cdr (assoc 8 (entget pattern2))))
- (setq pattern2 (cdr (assoc 2 (entget pattern2))))
- (initget "1 2")
- (setq keyword (getkword "\n是否同时更改图层?[<1>改/<2>不改]:"))
- (setq i 0)
- (repeat (sslength ss)
- (setq blk (ssname ss i))
- (setq blkname (cdr (assoc 2 (entget blk))))
- (f blkname pattern1 pattern2 keyword ly)
- (GetBlkNameInBLK blk)
- (setq namelist (delsame namelist))
- (setq ii 0)
- (repeat (length namelist)
- (setq blkname (nth ii namelist))
- (f blkname pattern1 pattern2 keyword ly)
- (setq ii (1+ ii))
- )
- (entupd blk);;刷新图元显示
- (setq i (1+ i))
- )
- ;(command "regen")
- (princ)
- )
- (defun f (n a b c d / doc blkdef)
- (if (not
- (VL-CATCH-ALL-ERROR-P
- (setq blkdef
- (VL-CATCH-ALL-APPLY
- 'vla-item
- (list
- (vla-get-blocks
- (setq doc
- (vla-get-ActiveDocument
- (vlax-get-acad-object)
- )
- )
- )
- n
- )
- )
- )
- )
- )
- (vlax-for o blkdef
- (if (and
- (= "AcDbHatch" (vla-get-ObjectName o))
- (= (strcase a) (strcase (vla-get-PatternName o)))
- )
- (progn
- (VL-CATCH-ALL-APPLY
- 'vla-SetPattern
- (list o
- (vla-get-PatternType o)
- b
- )
- )
- (if (= c "1")
- (VL-CATCH-ALL-APPLY 'vla-put-layer (list o d))
- )
- )
- )
- )
- )
- )
- (defun GetBlkNameInBLK
- (BlkEntName / xBlkName xBlkDef entName1 entType
- blkname)
- (setq xBlkName (cdr (assoc 2 (entget BlkEntName))))
- (setq xBlkDef (tblobjname "Block" xBlkName))
- (while (setq entName1 (entnext xBlkDef))
- (setq entType (cdr (assoc 0 (entget entName1))))
- (if (= entType "INSERT")
- (progn
- (setq blkname (vla-get-effectivename
- (vlax-ename->vla-object entName1)
- )
- )
- (setq namelist (cons blkname namelist))
- (GetBlkNameInBLK entName1)
- )
- )
- (setq xBlkDef entName1)
- )
- )
- (defun delsame (l)
- (if l
- (cons (car l)
- (delsame (vl-remove (car l) (cdr l)))
- )
- )
- )
|