明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 778|回复: 8

[提问] 请问怎样求文字基点到最近平行线距离

[复制链接]
发表于 2019-4-13 16:52 | 显示全部楼层 |阅读模式
本帖最后由 CAD新军 于 2019-4-16 00:22 编辑


如图所示,都要求得道绿色线段平行段到abce字符串的距离(白色的是干扰线段)。第一种情况pl线距离(有一段平行,另外一段不一定垂直),第二个虽然红色线有一段更接近,但不是平行段。满足这两种情况就够了,求指导

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2019-4-16 00:23 | 显示全部楼层
有高手解答一下吗?
发表于 2019-4-16 09:18 | 显示全部楼层
;;比较麻烦
;;文字(单行)基点组码 10 ,旋转角度组码 50
;;线就麻烦了,pl线为例,(可能需要)遍历节点,两相邻节点求角度
;;认为是平行的,求距离,最后得到最近距离

评分

参与人数 1明经币 +1 收起 理由
xyp1964 + 1 赞一个!

查看全部评分

 楼主| 发表于 2019-4-16 21:42 | 显示全部楼层
satan421 发表于 2019-4-16 09:18
;;比较麻烦
;;文字(单行)基点组码 10 ,旋转角度组码 50
;;线就麻烦了,pl线为例,(可能需要)遍历节 ...

我觉得这样的也没有问题,只是我不会怎么组织pl线的节点,或者说有没有现成的代码可以获得pl线的各个节点的.pl线的格分段是什么类型能不能能获得?(是直线还是弧线)
发表于 2019-4-16 22:45 | 显示全部楼层

;; 伪源码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2019-4-16 23:11 | 显示全部楼层
本帖最后由 1291500406 于 2019-4-17 11:35 编辑



文字组码
组码
说明
100
子类标记 (AcDbText)
39
厚度(可选;默认值 = 0)
10
第一对齐点(在 OCS 中)
DXF:X 值;APP:三维点
20, 30
DXF:第一对齐点的 Y 值和 Z 值(在 OCS 中)
40
文字高度
1
默认值(字符串本身)
50
文字旋转角度(可选;默认值 = 0)
41
X 相对缩放比例宽度(可选;默认值 = 1)
使用拟合类型的文字时,该值也将进行调整。
51
倾斜角(可选;默认值 = 0)
7
文字样式名(可选;默认值 = 标准)
71
文字生成标志(可选;默认值 = 0):
2 = 文字反向(在 X 轴方向镜像)
4 = 文字倒置(在 Y 轴方向镜像)
72
文字水平对正类型(可选;默认值 = 0)整数代码(非按位编码)
0 = 左对正;1 = 居中对正;2 = 右对正
3 = 对齐(如果垂直对齐 = 0)
4 = 中间(如果垂直对齐 = 0)
5 = 拟合(如果垂直对齐 = 0)
详细信息请参见组 72 和 73 整数代码表
11
第二对齐点(在 OCS 中)(可选)
DXF:X 值;APP:三维点
只有当 72 或 73 组的值非零时,该值才有意义(如果对正不是基线对正/左对正)
21, 31
DXF:第二对齐点的 Y 值和 Z 值(在 OCS 中)(可选)
210
拉伸方向(可选;默认值 = 0, 0, 1)
DXF:X 值;APP:三维矢量
220, 230
DXF:拉伸方向的 Y 值和 Z 值(可选)
100
子类标记 (AcDbText)
73
文字垂直对正类型(可选;默认值 = 0):整数代码(非按位编码):
0 = 基线对正;1 = 底端对正;2 = 居中对正;3 = 顶端对正
详细信息请参见组 72 和 73 整数代码表

;;;获取文字基点坐标
(cdr (assoc 10 (entget (car (entsel "选择文字")))))
;;;获取文字角度
(cdr (assoc 50 (entget (car (entsel "选择文字")))))

;;;获取多段线所有端点坐标
(defun c:bb1 (/ en ent ptlst)   (setq en  (car (entsel)) ent (entget en '("*"))   )(setq ptlst (ss-asssoc 10 ent))(princ ptlst)(princ) )
(defun ss-asssoc (a lst / b lst2)(while (setq b (assoc a lst))(setq lst  (cdr (member b lst)) lst2 (cons (cdr b) lst2)))(reverse lst2))



;;;获取多段线两点坐标
(defun test (pline point / pp)
(setq point (vlax-curve-getClosestPointTo pline point))(setq pp (fix (vlax-curve-getParamAtPoint pline point)))
(list (vlax-curve-getPointAtParam pline pp) (vlax-curve-getPointAtParam pline (1+ pp))))


;;(apply 'test (entsel "选择线"))


;;;文字与线最近点连线
(defun c:bb()(setq LINE (car(entsel"选择线")) PNT  (cdr (assoc 10 (entget (car (entsel "选择文字"))))))
(command "_.LINE" "_NON" PNT "_NON" (vlax-curve-getClosestPointTo LINE PNT T) "")(princ))




两点坐标算角度 文字的角度 相等连线


点评

感谢..我想弄的小脚本关键代码这就出来了  发表于 2019-4-17 00:02
发表于 2019-4-26 13:15 | 显示全部楼层
1291500406 发表于 2019-4-16 23:11
;;;获取文字基点坐标
(cdr (assoc 10 (entget (car (entsel "选择文字")))))
...

你好,请问怎么获取距一个点最近的文字的字符
发表于 2019-4-26 13:15 | 显示全部楼层
1291500406 发表于 2019-4-16 23:11
;;;获取文字基点坐标
(cdr (assoc 10 (entget (car (entsel "选择文字")))))
...

你好,请问怎么获取距一个点最近的文字的字符
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-3-29 17:53 , Processed in 0.279207 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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