lizhaojun45 发表于 2019-3-17 16:25:38

【已解决】平行线并联/闭合的插件

本帖最后由 newer 于 2019-3-18 23:27 编辑

如图所示,通过插件,按先后的顺序选择这两条平行线,实现从左边变成右边的效果,新生成的线,最好是红色的,和这两条平行线垂直,或者和其中的一条线成45度夹角。两个插件来实现也可以,一个插件也行。

谢谢王鹏大哥了,解决我一个老大难的问题了,
在代码的,倒数第一行的前面,另外插入一小段代码,
就可以重复执行了,但是退出该功能,就得按esc键,
插入的代码包含括号如下。
(c:tt)



王鹏_pBZlo 发表于 2019-3-18 09:31:53

本帖最后由 王鹏_pBZlo 于 2019-3-18 11:13 编辑

这样可以吗?选择的第1根直线保持原样,从该直线的端点画一根直线与第2根线成45度/90度/135度这3种情况.
选择1: 与第1根线成135度,与第2根线成45度
选择2: 与2根线垂直

选择3: 与第1根线成45度,与第2根线成135度

三种情况均会修改第二根直线的端点到新的位置
(defun c:tt( / ent1 ent2 ljfs temposm p1 p2 ent1pro ent2pro p20 p21 p22 p23)
        (command "UCS" "")
        (setq ent1 (entsel "\n选择作为基准的直线(注:靠近端部选取):"))
        (setq ent2 (entsel "\n选择与基准直线平行的直线(注:靠近端部选取):"))
        (setq ljfs (getstring "\n[长于基准线(1)/平齐(2)/短于基准线(3):"))
        (setq temposm (getvar "osmode"))
        (setvar "osmode" 0)
        (setq p1 (cadr ent1) ent1 (car ent1))
        (setq p2 (cadr ent2) ent2 (car ent2))
        (setq ent1pro (entget ent1))
        (setq ent2pro (entget ent2))
        (if (< (distance p1 (cdr (assoc 10 ent1pro))) (distance p1 (cdr (assoc 11 ent1pro))))
          (setq p1 (cdr (assoc 10 ent1pro)))
          (setq p1 (cdr (assoc 11 ent1pro)))
        )       
        (if (< (distance p2 (cdr (assoc 10 ent2pro))) (distance p2 (cdr (assoc 11 ent2pro))))
          (progn        (setq p21 (cons 11 (cdr (assoc 10 ent2pro))) p20 (cons 10 (cdr (assoc 11 ent2pro))))
                (setq ent2pro (subst p20 (assoc 10 ent2pro) ent2pro))          
                (entmod (setq ent2pro (subst p21 (assoc 11 ent2pro) ent2pro)))
          )
        )
        (setq p20 (cdr (assoc 10 ent2pro)) p21 (cdr (assoc 11 ent2pro)))
        (setq p22 (inters p20 p21 p1 (polar p1 (+ (angle p20 p21) (/ pi 2.0)) 5) nil))
        (setq p21 (inters p20 p21 p1 (polar p1 (+ (angle p1 p22) (/ pi 4.0)) 5) nil))
        (setq p23 (inters p20 p21 p1 (polar p1 (- (angle p1 p22) (/ pi 4.0)) 5) nil))
        (if (< (distance p20 p21) (distance p20 p23))
          (setq p20 p21 p21 p23 p23 p20)
        )
        (cond         ((= ljfs "1") (setq p2 p21))
                ((= ljfs "2") (setq p2 p22))
                ((= ljfs "3") (setq p2 p23))
        )
        (entmod (subst (cons 11 p2) (assoc 11 ent2pro) ent2pro))
        (command "line" p1 p2 "")
        (setvar "osmode" temposm)
        (princ)
)



lizhaojun45 发表于 2019-3-17 16:29:57

注:绿色的虚线,打了一打xx,是不要的,插件能同时把它修剪掉就更好的了。

newer 发表于 2019-3-17 16:33:54

lizhaojun45 发表于 2019-3-17 16:29
注:绿色的虚线,打了一打xx,是不要的,插件能同时把它修剪掉就更好的了。

画什么,用这个?

lizhaojun45 发表于 2019-3-17 17:13:31

C:\Users\Administrator\Desktop\126

lizhaojun45 发表于 2019-3-17 17:17:07

家装行业,内外墙体是一对平行线,闭合这两条线用,斜线是用在,地砖铺贴的时候,波打线转角是45度对角,分段线要用到。

lizhaojun45 发表于 2019-3-17 18:47:14

用这个插件,把下面两个图里面,箭头所指的线段画出来。类似CAD自带的倒

Lisphk 发表于 2019-3-17 19:53:49

lizhaojun45 发表于 2019-3-17 18:47
用这个插件,把下面两个图里面,箭头所指的线段画出来。类似CAD自带的倒

用画 正交线的插件,画下墙垛不就行了吗?

王鹏_pBZlo 发表于 2019-3-17 21:04:22

总是水平的2根平行线吗?

lizhaojun45 发表于 2019-3-17 22:52:59

对呀,每次画图都要用到,画一张图,有10个地方要用到,倒圆角命令,有类似功能,只不过倒圆角,是用圆弧来连接的。

newer 发表于 2019-3-17 22:58:13

lizhaojun45 发表于 2019-3-17 22:52
对呀,每次画图都要用到,画一张图,有10个地方要用到,倒圆角命令,有类似功能,只不过倒圆角,是用圆弧来 ...

倒角,你半径给0,就是直线了

yangjian001 发表于 2019-3-18 00:19:59

谢谢楼主分享

lizhaojun45 发表于 2019-3-18 11:37:09

谢谢王鹏大哥,问题解决好了,超级好用,谢谢。

王鹏_pBZlo 发表于 2019-3-18 12:37:43

请把帖子标题加上【已解决】

sdlyjc 发表于 2019-3-18 20:51:10

王鹏_pBZlo 发表于 2019-3-18 09:31
这样可以吗?选择的第1根直线保持原样,从该直线的端点画一根直线与第2根线成45度/90度/135度这3种情况.
选 ...

居然能这样操作,佩服!!
页: [1] 2
查看完整版本: 【已解决】平行线并联/闭合的插件