马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - ;|
- 修改图块插入点
- 参数:
- e--- INSERT块实体名
- pnt--插入点(WCS)
- 返回值:
- T
- |;
- (defun XD::Block:ResetOrigin (e pnt / blkent blkname blkrefs mat0 mat-blk-wcs matr mat-wcs-blk new-pnt new-pnt1 old-pnt x)
- (if (= (xdrx_getpropertyvalue e "IsA") "AcDbBlockReference")
- (progn
- (setq new-pnt pnt
- mat-blk-wcs (xdrx_getPropertyValue e "BlockTransform")
- old-pnt (xdrx_getpropertyvalue e "Position")
- blkent (xdrx_getPropertyValue e "BlockTableRecord")
- blkname (car blkent)
- blkent (cadr blkent)
- mat-wcs-blk (xdrx_matrix_inverse mat-blk-wcs)
- new-pnt1 (xdrx_point_transform new-pnt mat-wcs-blk)
- mat0 (xdrx_matrix_identity 3)
- blkrefs (xdrx_getPropertyValue blkent "BlockReferenceEntities")
- matR (xdrx_matrix_setTransLation mat0 (mapcar
- '-
- old-pnt
- new-pnt
- )
- )
- )
- (xdrx_setPropertyValue blkent "Origin" new-pnt1)
- (xdrx_block_update blkname)
- (if (xdrx_getpropertyvalue blkent "HasAttributeDefinitions")
- (progn
- (xdrx_entity_transform (mapcar
- '(lambda (x)
- (xdrx_insert_getAttribs x)
- )
- blkrefs
- ) matR
- )
- )
- )
- (xdrx_entity_transform blkrefs (xdrx_matrix_inverse matR))
- )
- )
- )
|