`

[autolisp] 有趣的trim和extend的结合.lsp

阅读更多
;;; 有趣的trim和extend的结合                               *
;;; 初始创意Stig Madsen                                    *
;;; 用途,选择一根直线,再选择其他直线段Line,             *
;;; 后选Line会自动延伸extend或者修剪trim                   *
;;; qjchen之修改,重写大部分代码,将边界线改为更多类型     *
;;; 之中使用了 xdcad 狂刀的求两物体交点的代码,谢谢狂刀兄  *
(defun C:q ( / edge ep i int line linename liness sp)
  (vl-load-com)
  (while (not edge)
    (setq edge (car (entsel "\n 请选择边界线:")))
    (redraw edge 3)
  )
  (prompt "\n 请选择需要extend或者trim的直线段: ")
  (if (setq i 0
            liness (ssget '((0 . "LINE")))
      )
    (repeat (sslength liness)
      (setq line (entget (ssname liness i))
            sp (cdr (assoc 10 line))
            ep (cdr (assoc 11 line))
      )
      (if (setq int (nth 0 (x_intlst edge (ssname liness i) acExtendOtherEntity)))
        (if (< (distance int sp) (distance int ep))
          (entmod (subst (cons 10 int)(assoc 10 line) line))
          (entmod (subst (cons 11 int) (assoc 11 line)line))
        )
      )
      (setq i (1+ i))
    )
    (princ "\n 没有找到需要被extend或者trim的直线段")
  )
  (redraw edge 4)
)
;;; by 狂刀 at xdcad
(defun x_intlst (obj1 obj2 param / intlst1 intlst2 ptlst)
  (if (= 'ENAME (type obj1))
    (setq obj1 (vlax-ename->vla-object obj1))
  )
  (if (= 'ENAME (type obj2))
    (setq obj2 (vlax-ename->vla-object obj2))
  )
  (setq intlst1 (vlax-variant-value (vla-intersectwith obj1 obj2 param)))
  (if (< 0 (vlax-safearray-get-u-bound intlst1 1))
    (progn
      (setq intlst2 (vlax-safearray->list intlst1))
      (while (> (length intlst2) 0)
        (setq ptlst (cons (list (car intlst2) (cadr intlst2) (caddr intlst2))
                          ptlst
                    )
              intlst2 (cdddr intlst2)
        )
      )
    )
  )
  ptlst
)

(princ "\n By qjchen@gmail.com, 有趣的trim和extend的结合,命令名:q")
(princ)

  • 大小: 36.7 KB
分享到:
评论

相关推荐

    autolisp实用编程四例[归类].pdf

    《AutoLISP实用编程四例》是一篇关于利用AutoLISP语言进行Autodesk AutoCAD二次开发的文章。AutoLISP是AutoCAD内置的一种编程语言,它为用户提供了便捷的方式来扩展AutoCAD的功能。文章中列举了四个具体的编程实例,...

    AUTOCAD2008快捷键命令大全.pdf

    50. LSP: 加载LISP程序文件。 51. DSVIEWER: 三维视图窗口。 52. STYLE: 文本样式设置。 53. SCALE: 缩放命令。 54. SNAP: 捕捉模式。 55. DTEXT: 创建单行文字(*TEXT)。 56. Ctrl+Y: 重做。 57. Ctrl+Z: ...

    cad技巧(20210921112420).pdf

    8. acad.lsp和acadapp.lsp是AutoLISP脚本文件,通常用于自定义和扩展AutoCAD的命令和功能。 9. acad.dwt是AutoCAD的模板文件,用于基于预设的设置和内容快速启动新图形。 10. UCSICON:是“用户坐标系统的图标”...

    Mechanical 与 PCCAD2010 整合使用).txt

    3. **注册LISP程序和VLSX插件**:通过appload命令注册PCCAD特有的LISP程序和VLSX插件,如acad.lsp、pccadbas.lsp、supedit.lsp、dimtool.vlx和th_extend.vlx等,这些程序和插件提供了PCCAD的核心功能,是实现整合后...

    cad实用技巧共80条

    14. TRIM和EXTEND:修剪(TRIM)和延伸(EXTEND)命令,调整相交线段。 15. 配合使用SELECT和FILTER:选择特定类型的对象,如圆或线。 16. 使用WBLOCK创建块:将常用图形保存为块,便于重复使用。 17. 插入外部参照...

    好CAD快捷健

    用于加载外部编写的AutoLISP程序。 - **AV**:打开视图对话框(Dsviewer)。管理视图,包括保存和恢复视图。 - **SE**:打开对象自动捕捉对话框。自定义对象捕捉点的类型。 - **ST**:打开字体设置对话框(Style)。...

Global site tag (gtag.js) - Google Analytics