CAD lisp 如何实现直线指定长度位置打断?举例子有一条100mm长度的直线,我想实现输入定义好的命令后选择直线,然后输入长度30,则100直线会被打断成了、30+70的直线,切选择直线时点击了100偏向

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/25 13:54:08
CADlisp如何实现直线指定长度位置打断?举例子有一条100mm长度的直线,我想实现输入定义好的命令后选择直线,然后输入长度30,则100直线会被打断成了、30+70的直线,切选择直线时点击了100

CAD lisp 如何实现直线指定长度位置打断?举例子有一条100mm长度的直线,我想实现输入定义好的命令后选择直线,然后输入长度30,则100直线会被打断成了、30+70的直线,切选择直线时点击了100偏向
CAD lisp 如何实现直线指定长度位置打断?
举例子有一条100mm长度的直线,我想实现输入定义好的命令后选择直线,然后输入长度30,则100直线会被打断成了、30+70的直线,切选择直线时点击了100偏向哪一端则30mm会在这一侧形成!

CAD lisp 如何实现直线指定长度位置打断?举例子有一条100mm长度的直线,我想实现输入定义好的命令后选择直线,然后输入长度30,则100直线会被打断成了、30+70的直线,切选择直线时点击了100偏向
(defun tes1 ( / &kw &kw1 %k1)
 (setq &kw (entsel "\n请选择要打断的直线"))
 (if (/= &kw nil)
  (progn
   (setq &kw1 (entget (car &kw)))
   (setq %k1 (cdr (assoc 0 &kw1)))
   (if (/= %k1 "LINE")
    (progn
     (alert "\n你选择的不是直线,请重新选择");;如不需要提示就删除这句话下同
     (setq &kw nil)
    )
   )
  )
 )
 &kw
)
(defun tes2 (&kw / L L2 #os #clayer @p1 &kw1 &kw #k1 @p2 @p3 %k1 %k2 %k #ang)
 (command "Lengthen" (car &kw) "")
 (setq L2 (getvar "perimeter"))
 (setq #os (getvar "osmode"))    ;;取得当前捕捉设置
 (setq #clayer (getvar "clayer"));;取得当前图层设置
 (setq @p1 (cadr &kw))           ;;取得直线捕捉点
 (setq &kw1 (car &kw))           ;;取得直线图元名
 (setq &kw (entget &kw1))        ;;取得直线属性列表
 (setq #k1 (cdr (assoc 8 &kw)))  ;;取得直线图层
 (setq @p2 (cdr (assoc 10 &kw))) ;;取得直线起点
 (setq @p3 (cdr (assoc 11 &kw))) ;;取得直线端点
 (setq %k1 (distance @p1 @p2))   ;;起点与捕捉点距离
 (setq %k2 (distance @p1 @p3))   ;;端点与捕捉点距离
 (setq %k (- %k1 %k2))           ;;两个距离相减
 (if (>= %k 0)                   ;;如果靠近端点
  (progn
   (setq #ang (angle @p3 @p2))   ;;取得这个角度
   (setq L (getdist @p3 (strcat "\n请输入要断点的长度(不大于直线长度:<" (rtos L2 2 2) ">)")))
   (if (/= L nil) (setq @p1 (polar @p3 #ang L))) ;;得到这个打断点
  )
 )
 (if (< %k 0)                    ;;如果靠近起点
  (progn
   (setq #ang (angle @p2 @p3))   ;;取得这个角度
   (setq L (getdist @p2 (strcat "\n请输入要断点的长度(不大于直线长度:<" (rtos L2 2 2) ">)")))
   (if (/= L nil) (setq @p1 (polar @p2 #ang L))) ;;得到打断点
  )
 )
 (if (= L nil) (alert "\n没有输入长度"))
 (if (and (/= L nil) (>= L L2)) (alert "\n错误,输入的长度大于等于直线的长度") )
 (if (and (/= L nil) (> L2 L))
  (progn
   (setvar "osmode" 0)
   (setvar "clayer" #k1)
   (command "LINE" @p2 @p1 "")
   (command "LINE" @p1 @p3 "")
   (entdel &kw1)
   (setvar "osmode" #os)
   (setvar "clayer" #clayer)
  )
 )
)
(defun C:tt1 ( / &kw)
 (setvar "cmdecho" 0)
 (setvar "blipmode" 0)
 (setq &kw (tes1))
 (if (/= &kw nil) (tes2 &kw) )
 (prin1)
);;复制到记事本以(tt1.lsp)命名

CAD lisp 如何实现直线指定长度位置打断?举例子有一条100mm长度的直线,我想实现输入定义好的命令后选择直线,然后输入长度30,则100直线会被打断成了、30+70的直线,切选择直线时点击了100偏向 CAD lisp 如何实现框选两条直线,然后得到两条直线的端点坐标?图上有两条相交直线,我想通过一次点击或者框选,得到两条直线端点的坐标.这个用lisp语言如何实现 CAD中怎样拉伸一条直线到指定长度 Lisp CAD 求助高手!怎么通过代码实现连续画直线?我想实现一个功能,举例,输入一组长度数字(10 20 30 40 20 23 52)其中每组有上限例如10个长度,输入长度后,输入直线角度,最好默认不输入时为零 cad如何画根号长度的直线 cad如何定义直线的长度 cad2010中如何画指定长度的直线 CAD 中指定端点画一定长度直线 画出来的直线长度与设定的长 lisp语句条件表达式lisp语句中,if条件句,如果条件中有多个判断,如何实现,比如,当-0.4 CAD中如何绘制一条规定长度的直线 用CAD画线,很容易画出指定长度的直线,可是用3dsmax画线,好象不能!怎么办? CAD里,把随便一条直线修改成指定长度怎么操作能使线两边平均伸长或缩短?XX cad如何测量长度 CAD里画直线,两点的坐标的问题.在CAD里画一条直线,第一个指定点可以用坐标X,Y指定,第二个点为什么只能输入长度和角度来指定位置呢?我想第二个点也用坐标X,Y来指定位置,就是一条直线的两 在CAD中怎样计算指定线段的长度和? CAD轴侧图中带长度直线画法? CAD如何延长直线? lisp语言如何编写圆弧,