如何判斷ARC角度 起點與結束點的中間點
((-1 . <Entity name: 08700918>) (0 . "ARC") (5 . "29011C") (330 . <Entity name: 03213078>) (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "平面") (6 . "Continuous") (347 . <Entity name: 08389a28>) (284 . 0) (100 . "AcDbCircle") (10 -30248.5 6485.53 0.0) (40 . 11.9924) (210 0.0 0.0 1.0) (100 . "AcDbArc") (50 . 1.47826) (51 . 4.80493))目前我能看懂
0 類型
8 圖層
10 中心點
40 半徑
50 起點
51 端點
我想問 就是50與51弧中間的那個點 能讀出來嗎 一定要計算出來嗎?
67
284
代表的什麼
(setq r(cdr (assoc 40 eli))
as (cdr (assoc 50 eli))
ae (cdr (assoc 51 eli))
pc (cdr (assoc 10 eli))
)
(if (and (> ae as) (< ae (* pi 2.0)))
(setq a-half (* (+ as ae) 0.5))
(setq a-half (+ (* (+ as ae) 0.5) pi))
) 本帖最后由 namezg 于 2018-7-23 10:46 编辑
67 不存在或0表示图元位于模型空间中,1 表示图元位于图纸空间中。
284 阴影模式 0 = 投射和接收阴影 1 = 投射阴影 2 = 接收阴影 3 = 忽略阴影
;适用于所有曲线
(setq en (car (entsel)))
(setq obj (vlax-ename->vla-object en))
(setq sParam (vlax-curve-getStartParam Obj));曲线开始参数
(setq eParam (vlax-curve-getEndParam Obj));曲线结束参数
(setq mpt (vlax-curve-getPointAtParam Obj (* 0.5 (+ eParam sParam))));曲线中点
本帖最后由 namezg 于 2018-7-23 10:45 编辑
;只适用于圆弧对象
(setq en (car (entsel)))
(setq dxf (entget en))
(setq cpt (cdr (assoc 10 dxf)));圆心
(setq r (cdr (assoc 40 dxf)));半径
(setq sang (cdr (assoc 50 dxf)));起点角度
(setq eang (cdr (assoc 51 dxf)));终点角度
(setq mang (* 0.5 (+ sang eang)));中点角度
(setq mpt (polar cpt mang r));中点 试试找下对象“ARC”的中点?
好像有个VLAX系列函数是可以找到这个点的
都忘光了
ysq101 发表于 2018-7-20 00:23
试试找下对象“ARC”的中点?
好像有个VLAX系列函数是可以找到这个点的
沒事 我知道你好久不弄了 起点vlax-curve-getstartpoint ysq101 发表于 2018-7-20 00:23
试试找下对象“ARC”的中点?
好像有个VLAX系列函数是可以找到这个点的
我現在越用Lisp 感覺越無力似的 看來vlisp 不學不行啊有很多lisp 做不到的 vlisp 一個命令就解決了
张大锤 发表于 2018-7-20 08:30
我現在越用Lisp 感覺越無力似的 看來vlisp 不學不行啊有很多lisp 做不到的 vlisp 一個命令就解決了
LISP也不是无力的。
打好LISP基础 VLISP简化很多算法
很多需要“硬算”的东东
VLISP很方便就能实现
(PS:我一个VLISP也没学会就弃坑了) 这个计算中点的话,要似乎要考虑象限的情况。即50 与51值的情况 ;再来一个简单点的,利用捕捉
(setq pt (cadr (entsel)));拾取点
(setq mpt (osnap pt "_mid"));中点
页:
[1]
2