马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
动态拖动旋转填充实体保持填充的角度不变
 - (defun c:tt ()
- (defun _callback (dynpt)
- (setq mat (xdrx_matrix_identity 3)
- m (xdrx_matrix_setrotation mat (angle pt dynpt) '(0 0 1) pt);;旋转变换矩阵,基点PT
- )
- (if (not (equal dynpt lastpnt 1e-3));;如果点变化了执行
- (progn
- (xdrx_entity_delete e1);;删除临时的旋转块
- (xdrx_entity_transformedcopy e m);;原块旋转矩阵作用生成新的临时块
- (setq e1 (entlast))
- (xdrx_setpropertyvalue e1 "patternangle" ang)
- )
- )
- (setq lastpnt dynpt);;保存上次鼠标的位置
- )
- (if (and
- (setq e (car (xdrx_entsel "\n拾取填充<退出>:" '((0 . "hatch")
- )
- )
- )
- )
- (setq pt (getpoint "\n旋转基点<退出>:"))
- )
- (progn
- (xdrx_begin)
- (setq e1 (xdrx_object_clone e))
- (setq ang (xdrx_getpropertyvalue e "patternangle"))
- (xdrx_pointmonitor "_callback") ;;点监视器,回调函数_callback
- (if (getpoint pt)
- (progn
- (xdrx_entity_delete e) ;;删除原对象
- (xdrx_object_swapid e1 e);;旋转的块ID变成原块的ID
- )
- )
- (xdrx_pointmonitor);;结束点监视器
- (xdrx_end)
- )
- )
- )
|