277283904 发表于 2024-2-23 14:35:52

如何在原线条上居中生成可以输入任意长度的线条?

如图,其中10可以自定义输入

xyp1964 发表于 2024-2-23 22:35:30

(defun c:tt ()
(setq en(car (entsel "\n选择line: "))
        ll(getreal "\n输入线长: ")
        ent (entget en)
        pt1 (cdr (assoc 10 ent))
        pt2 (cdr (assoc 11 ent))
        rad (angle pt1 pt2)
        p0(mapcar '(lambda (x y) (* (+ x y) 0.5)) pt1 pt2)
        p1(polar p0 rad (* ll -0.5))
        p2(polar p0 rad (* ll 0.5))
)
(command "line" "non" p1 "non" p2 "")
(princ)
)

夏生生 发表于 2024-2-23 16:11:01

多抄别人的代码就会了
(defun c:tt(\ dis en ent l pt1 pt2)
    (setq en (car (entsel "\n选择line:"))
          l(getreal"\n输入线长:")
          ent(entget en)
          pt1(cdr(assoc 10 ent))
          pt2(cdr(assoc 11 ent))
          dis(distance pt1 pt2)
          l(* 0.5(- l dis))
          en (entmakex ent))
    (command "lengthen" "de" l (list en pt1) (list en pt2) ""))

x_s_s_1 发表于 2024-2-23 22:49:42

本帖最后由 x_s_s_1 于 2024-2-23 23:00 编辑

277283904 发表于 2024-2-23 21:31
测试过,不起作用,没反应的呢(\ dis en ent l pt1 pt2)改成(/ dis en ent l pt1 pt2)
(defun c:tt(/ dis en ent l pt1 pt2)
(setqen(car (entsel "\n选择line:"))
l   (getreal "\n输入线长:")
ent (entget en)
pt1 (cdr (assoc 10 ent))
pt2 (cdr (assoc 11 ent))
dis (distance pt1 pt2)
l   (* 0.5 (- l dis))
en(entmakex ent))
(command "lengthen" "de" l (list en pt1) (list en pt2) ""))

飞雪神光 发表于 2024-2-23 14:46:16

获取原线条的起点和端点 算出中点和角度 用 polar 计算得到任意长度的两点

277283904 发表于 2024-2-23 15:43:09

飞雪神光 发表于 2024-2-23 14:46
获取原线条的起点和端点 算出中点和角度 用 polar 计算得到任意长度的两点

不会写啊大佬;P

paulpipi 发表于 2024-2-23 16:41:32

感谢高手代码

277283904 发表于 2024-2-23 21:31:22

夏生生 发表于 2024-2-23 16:11
多抄别人的代码就会了

测试过,不起作用,没反应的呢;P

277283904 发表于 2024-2-24 17:35:01

xyp1964 发表于 2024-2-23 22:35
(defun c:tt ()
(setq en(car (entsel "\n选择line: "))
        ll(getreal "\n输入线长: ")


不好意思!可以在原线里生成吗,直接替换掉;P

277283904 发表于 2024-2-24 17:40:03

x_s_s_1 发表于 2024-2-23 22:49
(\ dis en ent l pt1 pt2)改成(/ dis en ent l pt1 pt2)

不好意思!可以在原线里生成吗,直接替换掉;P
页: [1] 2
查看完整版本: 如何在原线条上居中生成可以输入任意长度的线条?