明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1025|回复: 4

付费开发Lisp小工具

[复制链接]
发表于 2018-9-26 18:42 | 显示全部楼层 |阅读模式
3明经币

类似“划线标注”


 楼主| 发表于 2018-9-26 18:43 | 显示全部楼层
划线,以交点坐标画横向或竖向的构造线
回复

使用道具 举报

发表于 2018-10-26 15:11 | 显示全部楼层
OBJECTARX不行吗?lisp不太会
回复

使用道具 举报

发表于 2018-10-27 12:51 | 显示全部楼层
试试这个行不行:
  1. (defun c:tt (/ *error* ang cmdecho en endpt line-en list-pt lst ltscale os ptlst ss ssn startpt vh)
  2.   (defun *error* ( msg )
  3.     (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
  4.       (progn (princ (strcat "\n错误: " msg)) (vl-cmdf "_undo" "e") (vl-cmdf "_undo" 1) (setvar "CMDECHO" CMDECHO))
  5.     )
  6.     (princ)
  7.   )
  8.   (defun list-pt (lst)
  9.     (if lst
  10.       (cons
  11.         (list  
  12.           (car lst)
  13.           (cadr lst)
  14.           (caddr lst)
  15.         )
  16.         (list-pt (cdddr lst))
  17.       )
  18.     )
  19.   )
  20.   (setq cmdecho (getvar "CMDECHO"))
  21.   (setvar "CMDECHO" 0)
  22.   (vl-cmdf "_undo" "be")
  23.   (setq os (getvar "OSMODE"))
  24.   (setvar "OSMODE" 16384)
  25.   (setq startpt (getpoint "\n第一点:")
  26.     endpt (getpoint startpt "\n第二点:")
  27.     line-en (entmakex
  28.               (list '(000 . "LINE")
  29.                 '(100 . "AcDbEntity")
  30.                 '(100 . "AcDbLine")
  31.                 (cons 10 startpt)
  32.                 (cons 11 endpt)
  33.               )
  34.             )
  35.   )
  36.   (setvar "OSMODE" os)
  37.   (setq LtScale (getvar "LtScale"))  
  38.   (vl-cmdf "LtScale" (* LtScale 0.001))
  39.   (setq ss (ssget "_f" (list startpt endpt) '((0 . "*line,CIRCLE,ELLIPSE,ARC")))
  40.     ssn (sslength ss)
  41.     ang (angle startpt endpt)
  42.   )
  43.   (vl-cmdf "LtScale" LtScale)
  44.   (if (or (<= (* pi 0.25) ang (* pi 0.75))
  45.         (<= (* pi 1.25) ang (* pi 1.75))
  46.       )
  47.     (setq VH "h")
  48.     (setq VH "v")
  49.   )
  50.   (while (setq en (ssname ss (setq ssn (1- ssn))))
  51.     (setq lst  (vl-catch-all-apply
  52.                 'vlax-safearray->list
  53.                 (list
  54.                   (vlax-variant-value
  55.                     (vla-intersectwith (vlax-ename->vla-object line-en) (vlax-ename->vla-object en) acExtendNone)
  56.                   )
  57.                 )
  58.               )
  59.       ptlst (if (vl-catch-all-error-p lst)
  60.               nil
  61.               (list-pt lst)
  62.             )
  63.     )
  64.     (cond ((= VH "v")
  65.             (mapcar '(lambda (x) (entmake (list '(0 . "XLINE") '(100 . "AcDbEntity") '(100 . "AcDbXline") (cons 10 x) (cons 11 '(0 1 0))))) ptlst)
  66.           )
  67.       ((= VH "h")
  68.         (mapcar '(lambda (x) (entmake (list '(0 . "XLINE") '(100 . "AcDbEntity") '(100 . "AcDbXline") (cons 10 x) (cons 11 '(1 0 0))))) ptlst)
  69.       )
  70.     )
  71.   )
  72.   (vl-cmdf "_erase" line-en "")
  73.   (vl-cmdf "_undo" "e")
  74.   (setvar "CMDECHO" CMDECHO)
  75.   (princ)
  76. )


回复

使用道具 举报

发表于 2020-10-31 10:11 | 显示全部楼层
顶楼主  支持楼上的。。。。。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 21:18 , Processed in 0.553362 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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