张大锤 发表于 2018-7-19 22:04:16

如何判斷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
代表的什麼

前生 发表于 2018-7-26 13:38:08


(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 08:40:55

本帖最后由 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:38:33

本帖最后由 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));中点

ysq101 发表于 2018-7-20 00:23:13

试试找下对象“ARC”的中点?
好像有个VLAX系列函数是可以找到这个点的


都忘光了

张大锤 发表于 2018-7-20 08:03:17

ysq101 发表于 2018-7-20 00:23
试试找下对象“ARC”的中点?
好像有个VLAX系列函数是可以找到这个点的



沒事 我知道你好久不弄了

自贡黄明儒 发表于 2018-7-20 08:06:40

起点vlax-curve-getstartpoint

张大锤 发表于 2018-7-20 08:30:56

ysq101 发表于 2018-7-20 00:23
试试找下对象“ARC”的中点?
好像有个VLAX系列函数是可以找到这个点的


我現在越用Lisp 感覺越無力似的 看來vlisp 不學不行啊有很多lisp 做不到的 vlisp 一個命令就解決了

ysq101 发表于 2018-7-21 23:51:09

张大锤 发表于 2018-7-20 08:30
我現在越用Lisp 感覺越無力似的 看來vlisp 不學不行啊有很多lisp 做不到的 vlisp 一個命令就解決了

LISP也不是无力的。
打好LISP基础    VLISP简化很多算法
很多需要“硬算”的东东

VLISP很方便就能实现
(PS:我一个VLISP也没学会就弃坑了)

前生 发表于 2018-7-23 00:16:51

这个计算中点的话,要似乎要考虑象限的情况。即50 与51值的情况

namezg 发表于 2018-7-23 11:00:15

;再来一个简单点的,利用捕捉
(setq pt (cadr (entsel)));拾取点
(setq mpt (osnap pt "_mid"));中点
页: [1] 2
查看完整版本: 如何判斷ARC角度 起點與結束點的中間點