youyou3810 发表于 2019-4-30 12:04:17

(修改边长)水平有限,研究几天就是目前的结果,希望高手出击

本帖最后由 youyou3810 于 2019-5-5 00:18 编辑

(defun c:tt1 ()

(setq i 0)
    (setq pline (car (entsel)))
    (setq ent (entget pline))
    (setq pts nil)
    (repeat (length ent)
    (if (= (car (nth i ent)) 10)
      (setq pts (append pts (list (cdr (nth i ent)))))
    )
    (setq i (1+ i))
    )
    (print pts)
(nth 0 pts)

(setq pt1 (getpoint "点1:"))
(setq pt2 (getpoint pt1 "点2:"))

    (setq ent(subst(cons 10 pt1)(assoc 10 ent)ent))
(entmod ent);重生成更新图元,显示到鼠标 位置
)
1 修改点2位置
2 可以修改任意边长
水平有限,研究几天就是目前的结果,希望高手出击

cable2004 发表于 2019-4-30 12:04:18

(defun c:tt ()
(setq i 0)
    (setq pline (car (entsel)))
    (setq Object (vlax-ename->vla-object pline))
    (setq ent (entget pline))
    (setq pts nil)
    (repeat (length ent)
    (if (= (car (nth i ent)) 10)
      (setq pts (append pts (list (cdr (nth i ent)))))
    )
    (setq i (1+ i))
    )
    (print pts)
(nth 0 pts)
(setq pt1 (getpoint "点1:"))
(setq pt2 (getpoint pt1 "点2:"))
(setq pt1a (car (vl-sort pts (function(lambda (e1 e2)(< (distance pt1 e1) (distance pt1 e2)))))))
(setq pt2a (car (vl-sort pts (function(lambda (e1 e2)(< (distance pt2 e1) (distance pt2 e2)))))))
(setq pt1 (list (car pt1) (cadr pt1)))
(setq pt2 (list (car pt2) (cadr pt2)))
(vla-put-Coordinate Object (vlax-curve-getparamatpoint Object pt1a) (vlax-make-variant(vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length pt1)))) pt1 )))
(vla-put-Coordinate Object (vlax-curve-getparamatpoint Object pt2a) (vlax-make-variant(vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length pt2)))) pt2 )))
(princ)
)

youyou3810 发表于 2019-4-30 18:08:32

本帖最后由 youyou3810 于 2019-5-5 00:22 编辑

遇到问题无法确定选中那个边长 两个坐标 如果知道就很好处理了

youyou3810 发表于 2019-11-20 23:12:08

无法解决无法解决

youyou3810 发表于 2019-11-21 08:35:14

非常感谢 可以正常使用
页: [1]
查看完整版本: (修改边长)水平有限,研究几天就是目前的结果,希望高手出击