马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 newer 于 2016-5-23 12:32 编辑
拖动选点,同时支持 等分数一键回车
用到的新函数在这下: XD::Pnts:Project
[sell=5] - (defun c:XDTB_DIMBrk (/ ang base div dynpt e eLeft eRight msg myerr olderr
- pnts pt x xLine
- )
- (defun myerr (msg)
- (princ (strcat "\n" msg))
- (xdrx_end)
- (XD::DOC:Command (list ".undo" 1))
- (princ)
- )
- (defun _callback (dynpt)
- (xdrx_setpropertyvalue eLeft "xLine2Point" dynpt)
- (xdrx_setpropertyvalue eRight "xLine2Point" dynpt)
- )
- (if (setq e (car (xdrx_entsel "\n拾取要打断的尺寸标注实体<退出>:" '
- ((0 . "dimension") (-4 . "<or")
- (70 . 32)
- (70 . 33)
- (-4 . "or>")
- )
- )
- )
- )
- (progn
- (setq olderr *error*)
- (setq *error* myerr)
- (xdrx_begin)
- (xdrx_sysvar_push '("osmode" 99))
- (setq base (XD::DIM:BasePoints e)
- ang (apply
- 'angle
- base
- )
- xLine (XD::DIM:xLine e)
- )
- (xdrx_setpropertyvalue e "visibility" nil)
- (setq eLeft (xdrx_dimension_makerotate (caar xLine) (caar xLine)
- (car base) ang
- )
- )
- (setq eRight (xdrx_dimension_makerotate (caadr xLine) (caadr xLine)
- (car base) ang
- )
- )
- (xdrx_pointmonitor "_callback")
- (xdrx_initget 128 "2 3 4 5 6 7 8 9")
- (initget 128 "2 3 4 5 6 7 8 9")
- (setq pt (getpoint "\n断开点[2分(2)/3分(3)/4分(4)../9分(9)]<2>:"))
- (xdrx_setpropertyvalue e "visibility" t)
- (cond
- ((= (type pt) 'LIST)
- (xdrx_entity_setpropertiesFrom eLeft e)
- (xdrx_entity_setpropertiesFrom eRight e)
- (xdrx_entity_delete e)
- )
- ((= (type pt) 'STR)
- (setq div (atoi pt)
- pnts (XD::Pnts:Divide (car base) (cadr base) div)
- pnts (XD::Pnts:Project pnts (caar xLINE) (caadr xLine)
- (xdrx_vector_negate
- (xdrx_vector_normalize
- (apply
- 'mapcar
- (cons '-
- (car xLine)
- )
- )
- )
- )
- )
- pnts (XD::List:SnakePair pnts)
- )
- (mapcar
- '(lambda (x)
- (xdrx_dimension_makerotate (car x) (cadr x) (car base) ang)
- (xdrx_entity_setpropertiesFrom (entlast) e)
- )
- pnts
- )
- (xdrx_entity_delete eLeft)
- (xdrx_entity_delete eRight)
- (xdrx_entity_delete e)
- )
- (t
- (xdrx_entity_delete eLeft)
- (xdrx_entity_delete eRight)
- )
- )
- (xdrx_pointmonitor)
- (xdrx_sysvar_pop)
- (xdrx_end)
- (setq *error* olderr)
- )
- )
- (princ)
- )
[/sell] |