potencjalek 发表于 2022-7-5 23:42:48

lisp中的trim方法

你好
我正在寻找一些自动修剪对象的方法
目前我使用的是简单函数
(defun trim_entity (ss en point / )
(command "_trim" ss "" (list en point) "")
)
但是有没有其他方法(我不想使用“command”)来修剪lisp代码中的对象?

BIGAL 发表于 2022-7-5 23:53:17

你需要发布一个你想要的图像等,特定的修剪Lisp通常只做1风格的修剪。外面有很多。

potencjalek 发表于 2022-7-5 23:56:43

我需要的只是关于修剪对象的任何其他方法的信息(例如vla方法),
我将编写一个例程,用于修剪图形上垂直(或水平)连接线上的所有对象
我不想基于(命令“_trim”…我正在寻找一些替代方案

Snownut 发表于 2022-7-5 23:59:47

看看这里。。。
 
http://www.lee-mac.com/intersectionfunctions.html

David Bethel 发表于 2022-7-6 00:05:54

你说的是2D还是WCS大卫

potencjalek 发表于 2022-7-6 00:12:27

2D,始终为WCS

marko_ribar 发表于 2022-7-6 00:18:47

 
从ExpressTools中查找lisp。。。
ET-(c:extrim)

BIGAL 发表于 2022-7-6 00:26:03

像marko_ribar extrim一样,它消除了所有的困难,唯一的问题是您必须首先加载express lisp才能使用,一个简单的示例是一个对象和一个点。另外请注意,命令ETRIM not extrim最初发现了我,但找到了帮助。
 
(load "Extrim")
(etrim obj pt1)

potencjalek 发表于 2022-7-6 00:27:48

expresstools是否仅适用于autocad?我同时使用acad和bricscad,不幸的是,a无法在bricscad中加载expresstools

GP_ 发表于 2022-7-6 00:35:29

这是不可能的。
 
 
试试这个,又快又脏。
 
(defun c:test ( / xL p dir dirx Emax Emin d_off px xL2 px1 px2)
   (if (and
         (setq xL (car (entsel "\nPick a XLine for cutting edge... ")))
         (setq p (getpoint "\nSpecify the side to trim on: "))
         (setq dir (cdr (assoc 11 (entget xL))))
         (setq dir (list (abs (car dir)) (abs (cadr dir)) (last dir)))
         (or
               (setq dirx (equal dir '(1.0 0.0 0.0) 1e-5))
               (equal dir '(0.0 1.0 0.0) 1e-5)
         )
       )
       (progn
         (setq Emax (getvar 'extmax))
         (setq Emin (getvar 'extmin))
         (setq d_off (/ (distance Emax Emin) 4000)); <- change depending on the
                                                   ;    size of the model you have.
         (command "_offset" d_off xL "_non" p "")
         (setq xL2 (entlast))
         (setq px (cdr (assoc 10 (entget xL2))))
         (if dirx
               (setq px1 (list (car Emin) (cadr px))
                     px2 (list (car Emax) (cadr px)))
               (setq px1 (list (car px) (cadr Emin) )
                     px2 (list (car px) (cadr Emax)))
         )
         (command "_zoom" "_w" "_non" px1 "_non" px2)
         (command "_trim" xL "" "_f" "_non" px1 "_non" px2 "" "")
         (entdel xL2)
         (command "_zoom" "_p")
       )
   )
   (princ)
)
页: [1] 2
查看完整版本: lisp中的trim方法