马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - (defun c:tt ( / e eback elast ints inx inx1 msg myerr oclr olderr p1 p-1 p2 p-2 pt pt1 pt2 v1 v2)
- (defun myerr (msg)
- (princ (strcat "\n" msg))
- (redraw)
- (xdrx_pointmonitor)
- (xdrx_end)
- (vl-cmdf ".undo" 1)
- (setq *error* olderr)
- )
- (defun _callback22 (pt) ; 拖动中的回调处理函数
- (xdrx_entity_delete elast)
- (mapcar
- 'set
- '(p-1 p-2)
- (XD::Pnts:OrthoProject (list p1 p2) pt (mapcar
- '+
- pt
- v1
- )
- )
- )
- (setq ints (xdrx_curve_getinters (list p-1 p-2) e 3)) ; **裁剪向量和多?
- ; ?
- ; 形的所有交点
- (if ints
- (progn
- (setq ints (mapcar
- 'cadr
- (xdrx_points_sortoncurve (list p1 p2) ints)
- )
- ints (xd::list:dotPair ints) ; 交点集排序后,两两组合
- )
- (setq eback (xdrx_entity_copy e)
- eback (entlast)
- )
- (xdrx_setpropertyvalue eback "color" oclr)
- (setq elast (xdrx_curve_trim eback (list (caar ints) (cadar ints))
- p1 t
- )
- )
- (entdel eback)
- )
- )
- )
- (xdrx_begin)
- (setq olderr *error*)
- (setq *error* myerr)
- (if (setq e (xdrx_entsel "\n拾取封闭的多边形<退出>:" '((0 . "*POLYLINE")
- (-4 . "&=")
- (70 . 1)
- )
- )
- )
- (progn
- (setq inx (XD::Polyline:OnSegAt (car e) (cadr e))
- e (car e)
- inx1 (XD::PolyLine:-Index+ e inx)
- p1 (xdrx_getpropertyvalue e "PointAt" inx)
- p1 (XD::Pnts:Setz p1 0.0)
- p2 (xdrx_getpropertyvalue e "PointAt" (last inx1))
- p2 (XD::Pnts:Setz p2 0.0)
- pt1 (xdrx_midp p1 p2)
- v1 (xdrx_vector_normalize (mapcar
- '-
- p2
- p1
- )
- )
- v2 (xdrx_vector_perpvector v1)
- )
- (setq oclr (xdrx_getpropertyvalue e "color"))
- (xdrx_setpropertyvalue e "color" 251)
- (if (setq pt2 (XD::DRAG:GMOVE pt1 "\n边线的位置<退出>:" -1 v2 nil
- "_callback22"
- )
- ) ; 动态拖动
- (progn
- (xdrx_pointmonitor)
- (_callback22 pt2)
- (xdrx_entity_delete e)
- )
- )
- )
- )
- (xdrx_pointmonitor)
- (xdrx_end)
- (setq *error* olderr)
- (princ)
- )
|