乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: satishrajdev

[编程交流] 多个偏移

[复制链接]

5

主题

24

帖子

19

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 07:08:14 | 显示全部楼层
你好
 
我需要相同的lisp,但我不想提及层,无论层我需要工具,请帮助我。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 07:11:39 | 显示全部楼层
 
这些图层是机密的吗?
 
你能不能停止恢复线程,开始一个新的线程显示你在寻找什么,如果有人愿意帮助,这将是伟大的,我们应该感谢他们。
回复

使用道具 举报

5

主题

24

帖子

19

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 07:15:51 | 显示全部楼层
嗨,塔瓦,
 
通常在每张图中,我都会找到不同的图层名称,这就是为什么我没有提到这些名称的原因。
例如,找到附件,你能帮我做HVAC管道的中心线吗。
实例图纸
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 07:19:09 | 显示全部楼层
 
 
试试这个草稿,只选择两条线来创建它们之间的中心线(如果我很理解你的目标)
 
  1. (defun c:cl (/ _Mid ss i sn e1 e2 p1 p2 p3 p4)
  2. (defun *error* (x) (princ "\n *Cancel*"))
  3. (if
  4.    (eq
  5.      4
  6.      (logand 4
  7.              (cdr
  8.                (assoc 70 (entget (tblobjname "LAYER" (getvar 'clayer))))
  9.              )
  10.      )
  11.    )
  12.     (progn
  13.       (alert "<!> Current layer is LOCKED <!>")
  14.       (exit)
  15.     )
  16. )
  17. (defun _Mid (pt1 pt2)
  18.    (mapcar (function (lambda (j k) (* (+ j k) 0.5))) pt1 pt2)
  19. )
  20. (if (and (setq ss (ssget "_:L" '((0 . "LINE"))))
  21.           (if (eq 2 (setq i (sslength ss)))
  22.             t
  23.             (progn
  24.               (alert "Please select only two lines , OKAY ? ")
  25.               nil
  26.             )
  27.           )
  28.      )
  29.    (progn
  30.      (setq e1 (entget (ssname ss 0))
  31.            e2 (entget (ssname ss 1))
  32.            p1 (cdr (assoc 10 e1))
  33.            p2 (cdr (assoc 11 e1))
  34.            p3 (cdr (assoc 10 e2))
  35.            p4 (cdr (assoc 11 e2))
  36.      )
  37.      (if (not (inters p1 p3 p2 p4))
  38.        (entmakex (list '(0 . "LINE")
  39.                        (cons 10 (_Mid p1 p3))
  40.                        (cons 11 (_Mid p2 p4))
  41.                  )
  42.        )
  43.        (entmakex (list '(0 . "LINE")
  44.                        (cons 10 (_Mid p1 p2))
  45.                        (cons 11 (_Mid p3 p4))
  46.                  )
  47.        )
  48.      )
  49.    )
  50. )
  51. (princ "\n Written By Tharwat Al Shoufi")
  52. (princ)
  53. )
回复

使用道具 举报

5

主题

24

帖子

19

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 07:20:09 | 显示全部楼层
哇,非常感谢Tharwat,
 
它的工作很好,但我需要中心线的“LWPOLYLINE”关闭,也有什么我必须为这些关闭LWPOLYLINE的。任何帮助。。???
 
还有一个请求
 
我需要每个层的图形文件总数。。。你能帮我一下吗。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 07:23:55 | 显示全部楼层
 
不客气。
 
 
如果不需要将其作为多段线,请将其分解,并使用我的代码将其居中。
 
 
虽然这还不清楚,但我会把这个机会留给另一个人来帮助你。
 
塔瓦特
回复

使用道具 举报

5

主题

24

帖子

19

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 07:29:03 | 显示全部楼层
再次非常感谢,但对于多段线,u r代码不起作用。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-6 07:29:30 | 显示全部楼层
我知道,这就是为什么我在我之前的回复中说,如果你不想把它们作为多段线,就把它们分解。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 07:33:55 | 显示全部楼层
这是我不久前写的一封信。。。
 
  1. (defun c:LBL (/ foo AT:GetSel _pnts _pline _lwpline _dist e1 e2)
  2. ;; Draw (LW)Polyline between two selected curves (at midpoint of vertices).
  3. ;; Alan J. Thompson, 09.29.10
  4. (vl-load-com)
  5. (defun foo (e)
  6.    (and (wcmatch (cdr (assoc 0 (entget (car e)))) "LINE,*POLYLINE,SPLINE")
  7.         (not (vlax-curve-isClosed (car e)))
  8.    )
  9. )
  10. (defun AT:GetSel (meth msg fnc / ent)
  11.    ;; meth - selection method (entsel, nentsel, nentselp)
  12.    ;; msg - message to display (nil for default)
  13.    ;; fnc - optional function to apply to selected object
  14.    ;; Ex: (AT:GetSel entsel "\nSelect arc: " (lambda (x) (eq (cdr (assoc 0 (entget (car x)))) "ARC")))
  15.    ;; Alan J. Thompson, 05.25.10
  16.    (while
  17.      (progn (setvar 'ERRNO 0)
  18.             (setq ent (meth (cond (msg)
  19.                                   ("\nSelect object: ")
  20.                             )
  21.                       )
  22.             )
  23.             (cond ((eq (getvar 'ERRNO) 7) (princ "\nMissed, try again."))
  24.                   ((eq (type (car ent)) 'ENAME)
  25.                    (if (and fnc (not (fnc ent)))
  26.                      (princ "\nInvalid object!")
  27.                    )
  28.                   )
  29.             )
  30.      )
  31.    )
  32.    ent
  33. )
  34. (defun _pnts (e / p l)
  35.    (if e
  36.      (cond ((wcmatch (cdr (assoc 0 (entget e))) "ARC,LINE,SPLINE")
  37.             (list (vlax-curve-getStartPoint e) (vlax-curve-getEndPoint e))
  38.            )
  39.            ((wcmatch (cdr (assoc 0 (entget e))) "*POLYLINE")
  40.             (repeat (setq p (1+ (fix (vlax-curve-getEndParam e))))
  41.               (setq l (cons (vlax-curve-getPointAtParam e (setq p (1- p))) l))
  42.             )
  43.            )
  44.      )
  45.    )
  46. )
  47. (defun _pline (lst)
  48.    (if (and (> (length lst) 1)
  49.             (entmakex '((0 . "POLYLINE") (10 0. 0. 0.) (70 . ))
  50.             (foreach x lst (entmakex (list '(0 . "VERTEX") (cons 10 x) '(70 . 32))))
  51.        )
  52.      (cdr (assoc 330 (entget (entmakex '((0 . "SEQEND"))))))
  53.    )
  54. )
  55. (defun _lwpline (lst)
  56.    (if (> (length lst) 1)
  57.      (entmakex (append
  58.                  (list '(0 . "LWPOLYLINE")
  59.                        '(100 . "AcDbEntity")
  60.                        '(100 . "AcDbPolyline")
  61.                        (cons 90 (length lst))
  62.                        (cons 70 (* (getvar 'plinegen) 128))
  63.                  )
  64.                  (mapcar (function (lambda (p) (list 10 (car p) (cadr p)))) lst)
  65.                )
  66.      )
  67.    )
  68. )
  69. (defun _dist (a b) (distance (list (car a) (cadr a)) (list (car b) (cadr b))))
  70. (if
  71.    (and
  72.      (setq e1 (_pnts (car (AT:GetSel entsel "\nSelect first open curve: " foo))))
  73.      (setq e2 (_pnts (car (AT:GetSel entsel "\nSelect next open curve: " foo))))
  74.      (not (initget 0 "Lwpolyline Polyline"))
  75.      (setq *LBL:Opt* (cond ((getkword (strcat "\nSpecify line to draw: [Lwpolyline/Polyline] <"
  76.                                               (cond (*LBL:Opt*)
  77.                                                     ((setq *LBL:Opt* "Lwpolyline"))
  78.                                               )
  79.                                               ">: "
  80.                                       )
  81.                             )
  82.                            )
  83.                            (*LBL:Opt*)
  84.                      )
  85.      )
  86.    )
  87.     ((if (eq *LBL:Opt* "Lwpolyline")
  88.        _lwpline
  89.        _pline
  90.      )
  91.       (vl-remove nil
  92.                  (mapcar (function (lambda (a b)
  93.                                      (if (and a b (not (grdraw (trans a 0 1) (trans b 0 1) 1 1)))
  94.                                        (mapcar (function (lambda (a b) (/ (+ a b) 2.))) a b)
  95.                                      )
  96.                                    )
  97.                          )
  98.                          e1
  99.                          (if (< (_dist (car e1) (car e2))
  100.                                 (_dist (car e1) (last e2))
  101.                              )
  102.                            e2
  103.                            (reverse e2)
  104.                          )
  105.                  )
  106.       )
  107.     )
  108. )
  109. (princ)
  110. )
回复

使用道具 举报

5

主题

24

帖子

19

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 07:37:17 | 显示全部楼层
哇,非常感谢alanjt,它正在工作。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 18:33 , Processed in 0.463089 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表