明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1338|回复: 16

[提问] 如何判斷ARC角度 起點與結束點的中間點

[复制链接]
发表于 2018-7-19 22:04 | 显示全部楼层 |阅读模式
((-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 | 显示全部楼层

(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))
          )
发表于 2018-7-23 08:40 | 显示全部楼层
本帖最后由 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))));曲线中点
发表于 2018-7-23 10:38 | 显示全部楼层
本帖最后由 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));中点
发表于 2018-7-20 00:23 | 显示全部楼层
试试找下对象“ARC”的中点?
好像有个VLAX系列  函数是可以找到这个点的


都忘光了
 楼主| 发表于 2018-7-20 08:03 | 显示全部楼层
ysq101 发表于 2018-7-20 00:23
试试找下对象“ARC”的中点?
好像有个VLAX系列  函数是可以找到这个点的

沒事 我知道你好久不弄了
发表于 2018-7-20 08:06 | 显示全部楼层
起点vlax-curve-getstartpoint
 楼主| 发表于 2018-7-20 08:30 | 显示全部楼层
ysq101 发表于 2018-7-20 00:23
试试找下对象“ARC”的中点?
好像有个VLAX系列  函数是可以找到这个点的

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

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

VLISP很方便就能实现
(PS:我一个VLISP也没学会就弃坑了)
发表于 2018-7-23 00:16 | 显示全部楼层
这个计算中点的话,要似乎要考虑象限的情况。即50 与51值的情况
发表于 2018-7-23 11:00 | 显示全部楼层
;再来一个简单点的,利用捕捉
(setq pt (cadr (entsel)));拾取点
(setq mpt (osnap pt "_mid"));中点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-20 06:40 , Processed in 0.222869 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表