明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 407|回复: 10

[提问] 线段打断等分成3段lisp

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 李青松 于 2025-1-8 17:54 编辑

线段打断等分成3段
3个线变成单独的
3段我是举个例子
也可能是打断成4段等等
怎么写程序


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

最佳答案

回复

使用道具 举报

发表于 7 天前 | 显示全部楼层
不一定对
  1. (defun c:tt(/ dis en lst n os)
  2. (setq os  (getvar "osmode")
  3.        en  (car (entsel "\nSelect Object:"))
  4.        n   (getint "\n等分数:")
  5.        dis (/ (vlax-curve-getdistatparam
  6.                en
  7.                (vlax-curve-getendparam en))
  8.               n
  9.               1.)
  10.        n   (1- n))
  11. (setvar "osmode" 16419)
  12. (repeat n
  13.   (setq
  14.    lst (cons (vlax-curve-getpointatdist en (* n dis)) lst)
  15.    n   (1- n)))
  16. (foreach n  lst
  17.   (vl-cmdf "break" en "f" n "@")
  18.   (setq en (entlast)))
  19. (setvar "osmode" os))
回复

使用道具 举报

发表于 7 天前 | 显示全部楼层
可以用Break不过...

偏方--->

但依等分后的线段长
算得各断点
删除原线

绘出第一条线后
可改用Copy
也可Line连结各点位
回复

使用道具 举报

发表于 7 天前 | 显示全部楼层


  1. ;;需要E派系统的支持
  2. (defun c:tt ()
  3.   "曲线等分"
  4.   (or nn(setq nn 5))
  5.   (setq nn (Uint 1 "" "等分段数" nn))
  6.   (setq s1 (car(entsel"\n选择线段: ")))
  7.   (mapcar '(lambda (x) (xyp-BreakE s1 x x)) (reverse (xyp-CurveDivNum s1 nn)))
  8.   (princ)
  9. )

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 6 天前 | 显示全部楼层
回复

使用道具 举报

发表于 6 天前 | 显示全部楼层
用CAD原生的divide+breakatpoint写个lisp试试?
回复

使用道具 举报

发表于 6 天前 | 显示全部楼层
好像有个潜在问题,低版本貌似是没有breakatpoint命令的。。。
回复

使用道具 举报

发表于 6 天前 | 显示全部楼层
  1. (defun c:cv (/ ss x pe pm pc ang k p1)
  2.   (setq ss (entsel "\n选取直线:"))
  3.   (setq x (getreal "\n等分数:"))
  4.   (setq pe (osnap (cadr ss) "END"))
  5.   (setq pm (osnap (cadr ss) "MID"))
  6.   (setq pc (mapcar '+ pm (mapcar '- pm pe)))
  7.   (setq ang (angle pe pm))
  8.   (setq k (/ (distance pe pc) x))
  9.   (command "_erase" ss "")
  10.   (while (> x 0)
  11.     (setq x (1- x))
  12.     (setq p1 (polar pe ang k))
  13.     (command "line" pe p1 "")
  14.     (setq pe p1)
  15.   )
  16.   (princ)
  17. )


点评

曲线不行  发表于 6 天前
回复

使用道具 举报

发表于 6 天前 | 显示全部楼层
本帖最后由 Scarlet2001 于 2025-1-9 10:52 编辑

  • ;支持多段线、曲线、直线(理论圆弧和圆也行,在第11行的if里修改一下起点终点判断就行)
  • (defun c:DVV ( / l n k a pt ptlist ptalist pt1 pt2 xl)
  •   (setvar "cmdecho" 0)
  •   ;(setq ss (ssget '((0 . "LINE,LWPOLYLINE"))))
  •   (setq l (entsel "\n选择要定数等分的对象"))
  •   (setq n (getint "\n选择要定数等分的个数"))
  •   (setq a (entget (car l)))
  •   (entdel (car l))
  •   (setq l (entmakex a))
  •   (command "divide" l n)
  •   (if (= "LINE" (cdr (assoc 0 a)))
  •     (setq pt1 (cdr (assoc 10 a)) pt2 (cdr (assoc 11 a)))
  •     (setq pt1 (cdr (assoc 10 a)) pt2 (cdr (assoc 10 (reverse a))))
  •   )
  •   (setq ptlist (list) ptalist (list))
  •   (repeat (1- n)
  •     (if pt (setq pt (entnext pt)) (setq pt (entnext l)))
  •     (setq ptlist (cons (cdr (assoc 10 (entget pt))) ptlist))
  •     (setq ptalist (cons pt ptalist))
  •   )
  •   (entdel l)
  •   (setq ptlist (cons pt2 ptlist))
  •   (setq ptlist (cons pt1 (reverse ptlist)))
  •   (setq k 0)
  •   (repeat n
  •     (setq xl (entmakex a))
  •     (command "break" xl (nth k ptlist) pt1)
  •     (command "break" xl (nth (1+ k) ptlist) pt2)  
  •     (setq k (1+ k))
  •   )
  •   (foreach pt ptalist (entdel pt))
  •   (setvar "cmdecho" 1)
  •   (prin1)
  • )

回复

使用道具 举报

发表于 6 天前 | 显示全部楼层
本帖最后由 uualice2020 于 2025-1-11 11:13 编辑



  • ;获取曲线等分点(不含端点,n为等分数量)
  • (defun zx-CurveDivNum (en n / i pp pplis )
  • (setq pplis '() i 0  )
  • (repeat (-  n   1)
  •   (setq pp(vlax-curve-getPointAtDist en
  •           (*(/ (vlax-curve-getdistatparam en(vlax-curve-getendparam en)) n)
  •                                           (setq i (1+ i))))
  •   )
  • (setq pplis (cons pp pplis))
  • )
  • pplis
  • )
  • ;根据曲线等分点打断曲线 (n为等分数量)
  • (defun zx-Break(BreakE_enme n )
  • (foreach x (zx-CurveDivNum BreakE_enme n )
  •   (vl-cmdf "BREAK" (list BreakE_enme x) "f" "non" x "non" x)
  • )
  • )

本帖子中包含更多资源

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

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-15 19:36 , Processed in 0.188090 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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