马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
xdrx_isinside 莫名其妙?拾取点位置不同将有不同的结果。
- ;;API与CAD命令结合, 因为 xdrx_isinside 的 BUG 最后的局部效果不理想
- ;;
- (if (not $xdtb_globle_scale)
- (setq $xdtb_globle_scale 100.)
- )
- (defun c:test (/ pt e e0 ss sp ep sp1 ep1 pts)
- ;;先关闭轴线图层
- (setq pt (getpoint "\n选择内部点: "))
- (if (setq e (bpoly pt));;生成边界
- (progn
- ;;======程序结构===========;;
- (xdrx_begin) ;;标记程序开始
- (xdrx_sysvar_push "osmode");;保存系统变量
- (setvar "osmode" 0)
- ;;=========================
- (vl-cmdf ".offset" (* 2.85 $xdtb_globle_scale) (list (entlast) pt) pt "");;向内偏移
- (setq e0 (entlast)
- pts ($xdlsp_pline_vertex e0)
- )
- ;;生成园点
- (mapcar '(lambda (x y / midp p1 p2 p0)
- (setq midp (xdrx_midp x y)
- p0 (if (xdrx_isinside
- (polar midp
- (+ (angle x y) _pi2)
- (* 1.5 $xdtb_globle_scale)
- )
- e0
- )
- (polar midp
- (+ (angle x y) _pi2)
- (* 1.5 $xdtb_globle_scale)
- )
- (polar midp
- (- (angle x y) _pi2)
- $xdtb_globle_scale
- )
- )
- p1 (polar p0 (angle x y) (* 2 $xdtb_globle_scale))
- p2 (polar p0 (angle x y) (* -2. $xdtb_globle_scale))
- )
- (vl-cmdf ".donut" "0" (* 1.5 $xdtb_globle_scale) p0 p1 p2 "")
- )
- pts
- (append (cdr pts) (list (car pts)))
- )
- (vl-cmdf ".copy" (list e0 pt) "" '(0. 0. 0.) "@");;生成偏移线的副本
- (xdrx_setmark);;设置标记
- (vl-cmdf ".explode" (entlast) "");;分解副本偏移线
- (xdrx_setsstodb (xdrx_getss) 0);;获取分解后的实体并放入内部数据库
- (while (setq e1 (xdrx_getentdata 0));;取出内部第一数据库实体
- (setq sp (xdrx_getentdxf 10);;起点
- ep (xdrx_getentdxf 11);;端点
- midp (xdrx_midp sp ep)
-
- pangle (angle sp ep)
- sp1 (polar sp (+ pangle pi) (* 3 $xdtb_globle_scale));;起点延伸
- ep1 (polar ep pangle (* 3 $xdtb_globle_scale));;端点延伸
- )
- (if (xdrx_isinside sp1 e0);;判断延伸点是否在副本偏移线内部
- (xdrx_modent 10 sp1);;如果在内部修改起点
- )
- (if (xdrx_isinside ep1 e0)
- (xdrx_modent 11 ep1);;端点延伸后在内部修改端点
- )
- )
- (vl-cmdf ".pedit" "m" (xdrx_getss) "" "y" "j" "1" "w" $xdtb_globle_scale "");;利用2002中的 "M" 和 "J" 选项连接线段并加粗
- (xdrx_entity_delete e0)
- (xdrx_entity_delete e)
- ;;========================;;
- (xdrx_sysvar_pop) ;;恢复系统变量
- (xdrx_end) ;;标记程序结束
- ;;========================;;
- (princ)
- )
- )
- )
|