马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
送给在布局里面出图的朋友,有时候需要把模型空间的实体转到图纸空间中,比如一些文字,图框,指北针等等
程序可以自动计算模型空间到图纸空间的变换矩阵(比例,旋转等等),正确的把需要的时候转到图纸空间正确的位置。
 - (defun c:xdtb_entms2ps (/ e ss mat yorno ss1 box)
- (defun _callback (dynpt)
- (xdrx_grdraw 251 0 (xd::pnts:close box))
- (xdrx_grdraw 251 0 (car box) (caddr box))
- (xdrx_grdraw 251 0 (cadr box) (last box))
- )
- (defun *error* (msg)
- (princ msg)
- (xdrx_end)
- (redraw)
- (setvar "tilemode" 0)
- (princ)
- )
- (if (or (xdrx_document_ispaperspace) (xdrx_pspace))
- (progn
- (if (and
- (setq e (car
- (xdrx_entsel "\n拾取布局视口<退出>:" '((0 . "VIEWPORT")))
- )
- )
- )
- (progn (xdrx_begin)
- (setq mat (xdrx_matrix_ps2ms e)
- mat-ms->ps (xdrx_matrix_inverse mat)
- scl (xdrx_getpropertyvalue e "customscale")
- scl (/ 1 scl)
- )
- (setq box (xdrx_points_transform (xdrx_entity_box e) mat))
- (setvar "tilemode" 1)
- (xdrx_document_zoomwindow (car box) (caddr box))
- (xdrx_pointmonitor "_callback")
- (if (and (xdrx_initssget "\n选择要转到图纸空间的实体<退出>:")
- (setq ss (xdrx_ssget))
- )
- (progn (xdrx_initget "Y N")
- (setq yorno (xdrx_yesorno "\n移动吗" 0))
- (xdrx_pointmonitor)
- (setvar "tilemode" 0)
- (setq ss1 (xdrx_entity_transformedcopy ss mat-ms->ps))
- (if (= yorno 1)
- (xdrx_entity_delete ss)
- )
- (mapcar '(lambda (x)
- (setq sc (xdrx_getpropertyvalue x "dimscale"))
- (xdrx_setpropertyvalue x "DIMSCALE" (/ sc scl))
- )
- (xdrx_pickset->ents
- (xd::pickset:getsub ss1 '((0 . "DIMENSION")))
- )
- )
- (xdrx_prompt
- "\n成功*"
- (if (= yorno 1)
- "移动"
- "拷贝"
- )
- "*了 "
- (sslength ss)
- " 个实体到图纸空间."
- )
- (xdrx_initget)
- )
- (progn (xdrx_pointmonitor))
- )
- (setq *error* nil)
- (xdrx_end)
- )
- )
- )
- (progn (xdrx_prompt "\n请在图纸空间执行本命令."))
- )
- (princ)
- )
|