马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
写个在AUTOCAD里面对MPOLYGON的布尔操作。
 - (defun c:XDTB_MPBooler ( / e1 e2 msg myerr op oper)
- (defun myerr (msg)
- (princ "\n")
- (princ msg)
- (xdrx_pickset_redraw e1 e2 t)
- (xdrx_end)
- (princ)
- )
- (xdrx_begin)
- (setq *error* myerr)
- (if (and
- (setq e1 (car (xdrx_entsel "\n选取第一个MPolygon实体<退出>:")))
- (xdrx_pickset_redraw e1)
- (setq e2 (car (xdrx_entsel "\n选取第二个MPolygon实体<退出>:")))
- (xdrx_pickset_redraw e2)
- )
- (progn
- (if (not #mpolygon_oper)
- (setq #mpolygon_oper "union")
- )
- (xdrx_initget "U S I")
- (if (setq oper (getkword (xdrx_prompt "\n选取操作方式[交(I)/并(U)/差(S)<"
- (cond
- ((= #mpolygon_oper "union")
- "并"
- )
- ((= #mpolygon_oper "intersect")
- "交"
- )
- (t
- "差"
- )
- ) ">:" t
- )
- )
- )
- (progn
- (cond
- ((= oper "I")
- (setq #mpolygon_oper "intersect")
- )
- ((= oper "U")
- (setq #mpolygon_oper "union")
- )
- ((= oper "S")
- (setq #mpolygon_oper "subtract")
- )
- )
- )
- )
- (setq op (read (strcat "xdrx_mpolygon_" #mpolygon_oper)))
- (if (eval (cons op (list e1 e2)))
- (progn
- (xdrx_prompt "\n操作成功.")
- )
- (progn
- (xdrx_prompt "\n操作失败.")
- )
- )
- )
- )
- (setq *error* nil)
- (xdrx_end)
- (princ)
- )
|