明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 956|回复: 15

求一个单纯的洞口线插件

[复制链接]
发表于 2024-1-3 08:25 | 显示全部楼层 |阅读模式
本帖最后由 yefei812678 于 2024-1-3 08:28 编辑

就这样的一个单纯洞口线插件

本帖子中包含更多资源

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

x
发表于 2024-1-3 09:36 | 显示全部楼层
  1. (PROMPT "\n作者:流河  QQ:859779429")
  2. (PROMPT "\n 快捷键 TT")
  3. (DEFUN C:TT (/ THISDRAWING PT1 PT2 PLST E)
  4.   (setq        thisdrawing
  5.          (vla-get-activedocument
  6.            (vlax-get-acad-object)
  7.          )
  8.   )
  9.   (VLA-STARTUNDOMARK THISDRAWING)
  10.   (setq
  11.     pt1        (getpoint (STRCAT "\n窗交对象:指定角点1"))
  12.   )
  13.   (if (not pt1)
  14.     (vl-exit-with-value 0)
  15.   )
  16.   (setq pt2 (getcorner pt1 (STRCAT "\n窗交对象:指定角点2:")))
  17.   (IF (NOT PT2)
  18.     (VL-EXIT-WITH-VALUE 0)
  19.   )
  20.   (SETQ        PLST (LIST PT1 PT2)
  21.         PLST (VL-SORT PLST
  22.                       (FUNCTION (LAMBDA (E1 E2) (> (CAR E1) (CAR E2))))
  23.              )
  24.         PLST (LIST (CAR PLST)
  25.                    (LIST (CAR (CAR PLST)) (CADR (CADR PLST)))
  26.                    (CADR PLST)
  27.              )
  28.         PLST (LIST (CAR PLST)
  29.                    (POLAR (CADR PLST)
  30.                           (ANGLE (CADR PLST) (LH:MID PT1 PT2))
  31.                           (* 0.3 (DISTANCE (CADR PLST) (LH:MID PT1 PT2)))
  32.                    )
  33.                    (CADDR PLST)
  34.              )
  35.         E    (LH:MakeLWPOLYLINE PLST)
  36.   )
  37.   (IF (NOT (tblsearch "LTYPE" "ACAD_ISO02W100"))
  38.     (vl-catch-all-apply
  39.       'vla-Load
  40.       (list (vla-get-Linetypes
  41.               (vla-get-ActiveDocument (vlax-get-acad-object))
  42.             )
  43.             "ACAD_ISO02W100"
  44.             "acad.lin"
  45.       )
  46.     )
  47.   )
  48.   (vla-put-Linetype (vlax-ename->vla-object E) "ACAD_ISO02W100")
  49.   (vla-put-LinetypeScale
  50.     (vlax-ename->vla-object E)
  51.     (ABS (* (DISTANCE (CAR PLST) (CADDR PLST)) 0.01))
  52.   )
  53.   (vla-endundomark thisdrawing)
  54.   (princ)
  55. )
  56. (defun LH:MID (po1 po2)
  57.   (MAPCAR '(lambda (X Y) (* (+ X Y) 0.5)) po1 po2)
  58. )
  59. ;;167.3 [功能] Entmake点表生成多段线
  60. (defun LH:MakeLWPOLYLINE (lst / PT)
  61.   (entmakeX
  62.     (append
  63.       (list '(0 . "LWPOLYLINE")
  64.             '(100 . "AcDbEntity")
  65.             '(100 . "AcDbPolyline")
  66.             (cons 90 (length lst))
  67.       )
  68.       (mapcar '(lambda (pt) (cons 10 pt)) lst)
  69.     )
  70.   )
  71. )

本帖子中包含更多资源

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

x
回复 支持 2 反对 0

使用道具 举报

发表于 2024-1-9 15:55 | 显示全部楼层
  1. (defun c:dk( / mydefunction dk_bili dk_min dk_layer)
  2.         (setq dk_bili 0.2 ;引线比例
  3.                         dk_min 50 ;折线最小距离
  4.                         dk_layer "SE_HOLE"
  5.         );;变量设置
  6.         (if (not (tblsearch "LAYER" "SE_HOLE"))
  7.                 (progn
  8.                         (entmake (list '(0 . "LAYER")
  9.                                                                 '(100 . "AcDbSymbolTableRecord")
  10.                                                                 '(100 . "AcDbLayerTableRecord")
  11.                                        '(70 . 0)
  12.                                        '(62 . 201)
  13.                                        '(6 . "Continuous")
  14.                                        '(2 . "SE_HOLE")))
  15.                 )
  16.         )
  17.         (defun dk::draw_dk(/ dis dx x y pt2 pt3 dk_distance);(hcl_make_rec p1 p2 "0" 1 40)
  18. ;                (setq dk_distance (* (distance pt1 pt0) (- 0.5 dk_bili))
  19. ;                                pt2 (point_mid pt0 pt1)
  20. ;                                pt2 (polar pt2 (- pi (angle pt0 pt1)) dk_distance)
  21. ;                )
  22.                 (setq dis (* (min (abs (- (car pt1) (car pt0))) (abs (- (cadr pt1) (cadr pt0)))) dk_bili)
  23.                                 dis (max dis dk_min)
  24.                 )
  25.                 (if (< (car pt0) (car pt1))
  26.                         (setq dx dis)
  27.                         (setq dx (- dis))
  28.                 )
  29.                 (setq x (+ (car pt0) dx))

  30.                 (if (< (cadr pt0) (cadr pt1))
  31.                         (setq dx dis)
  32.                         (setq dx (- dis))
  33.                 )
  34.                 (setq y (- (cadr pt1) dx)
  35.                                 pt2 (list x y)
  36.                 )


  37.                 (entmake (list
  38.                                         '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 8 dk_layer)
  39.                                         '(90 . 3) '(43 . 0)
  40.                                         (cons 10 pt0) (cons 10 pt2) (cons 10 pt1)
  41.                                         )
  42.                 )
  43.                 (if dk_has_rec
  44.                         (dk::make_rec)
  45.                 )
  46.         )
  47.         (defun dk::make_rec();(hcl_make_rec p1 p2 "0" 1 40)
  48.                 (entmake (list
  49.                                         '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 8 dk_layer)
  50.                                         '(90 . 4) '(70 . 1) '(43 . 0)
  51.                                         (list 10 (car pt0) (cadr pt0)) (list 10 (car pt0) (cadr pt1))
  52.                                         (list 10 (car pt1) (cadr pt1)) (list 10 (car pt1) (cadr pt0))
  53.                         )
  54.                 )
  55.         )
  56.         (defun dk_print_parm( / tip_rec)
  57.                 (initget 0 "F")
  58.                 (if dk_has_rec
  59.                         (setq tip_rec "有轮廓")
  60.                         (setq tip_rec "无轮廓")
  61.                 )
  62.                 (princ (strcat "\n【标注洞口】\n  当前模式:" tip_rec
  63.                         ))
  64.         )
  65.         (defun mydefunction(/ pt0 pt1)
  66.                 ;;begin mydefunction
  67.                 (dk_print_parm)
  68.                 (while (setq pt0 (getpoint "\n  第一点[F切换模式]:"))
  69.                         (cond
  70.                                 ((= "F" pt0)
  71.                                         (setq dk_has_rec (not dk_has_rec))
  72.                                 )
  73.                                 (t
  74.                                         (if (setq pt1 (getpoint pt0 "\n  第二点:"))
  75.                                                 (progn
  76.                                                         (dk::draw_dk)
  77.                                                 )
  78.                                         )
  79.                                 )
  80.                         )
  81.                         (dk_print_parm)
  82.                 )
  83.         )
  84.         (setvar 'cmdecho 0)
  85.         (mydefunction)
  86.         (setvar 'cmdecho 1)
  87.         (prin1)
  88. )
发表于 2024-1-3 12:52 | 显示全部楼层

创建洞口线后,将线颜色改成其它色就更好了。
发表于 2024-1-3 13:06 | 显示全部楼层
搜索一下,论坛里面应该会有成品的代码。
发表于 2024-1-3 14:39 | 显示全部楼层
xiao1984 发表于 2024-1-3 12:52
创建洞口线后,将线颜色改成其它色就更好了。

加几个字符就好了,位置如下:

本帖子中包含更多资源

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

x
 楼主| 发表于 2024-1-3 15:44 | 显示全部楼层

这是两点 弄得 我就想直接在里面点下就好的哪种
 楼主| 发表于 2024-1-3 15:46 | 显示全部楼层
能不能直接点些矩形框里面就画出来那种?不用设置图层  可以把线型设置下
 楼主| 发表于 2024-1-3 17:39 | 显示全部楼层


能不能直接点些矩形框里面就画出来那种?不用设置图层  可以把线型设置下
发表于 2024-1-3 21:22 | 显示全部楼层
怕怕吓一跳 发表于 2024-1-3 14:39
加几个字符就好了,位置如下:

十分感谢!可以修改想要的颜色了。
发表于 2024-1-4 10:45 | 显示全部楼层
  1. (DEFUN C:tt()
  2.    
  3.    
  4.    (setq P1 (GETPOINT "\n输入矩形的一个角点" ))
  5.    (setq P3 (GETCORNER P1 "\n输入矩形的另一个角点" ))
  6.    (setq P2 (LIST (CAR P3 ) (CADR P1 ) ))
  7.    (setq P4 (LIST (CAR P1 ) (CADR P3 ) ))
  8.    (setq P5 (LIST (/ (+ (CAR P1 ) (CAR P3 ) ) 2 ) (/ (+ (CADR P1 ) (CADR P3 ) ) 2 ) ))
  9.    (setq P6 (LIST (+ (CAR P1 ) (/ (- (CAR P3 ) (CAR P1 ) ) 6 ) ) (+ (CADR P1 ) (/ (- (CADR P3 ) (CADR P1 ) ) 6 ) ) ))
  10.         
  11.    (command "pline" ) (command P2 ) (command P6 ) (command P4 ) (command "" )
  12.         

  13. (PRINC )  )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 22:00 , Processed in 0.866224 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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