乐筑天下

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

[编程交流] 喂~,你能看看这个吗

[复制链接]

7

主题

26

帖子

19

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:43:21 | 显示全部楼层
嗨~谢谢你的好意。谢谢您。
 
我还有一个问题。
 
我必须将除原始多边形之外的层更改为我创建的特定层。
 
如何更改除原始多边形外的层生成实体?
 
谢谢你的帮助。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 15:46:07 | 显示全部楼层
您是指新创建的直线和圆弧(在当前活动层中创建),并将原始多段线保留在其当前指定的层中,该多段线已放置在其中?
回复

使用道具 举报

39

主题

180

帖子

141

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
195
发表于 2022-7-5 15:50:26 | 显示全部楼层
Marko_ribar,
 
那么默认值对lisp有什么作用呢?我将其添加到代码中,以使新行更改到不同的层。
 
  1. (entmake (vl-list* '(0 . "LINE") (cons 10 (trans a e 0)) (cons 11 (trans b e 0)) p))
  2.       (vl-catch-all-apply 'vlax-put (list (vlax-ename->vla-object (entlast)) 'Layer "Router - Blue - Cuts"))
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 15:52:19 | 显示全部楼层
创建新图层并使其成为当前图层,同时根据需要更改当前颜色,最后应用此版本:
 
请注意,现在您不需要(LM:defaultprops)。。。
 
HTH。,M、 R。
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 15:55:12 | 显示全部楼层
 
感谢mods,如果内部偏移距离大于弧半径,您的评论将指导我们修复错误
 
更新v1.1-检查较大半径
感谢李的子功能
  1. [color="green"];; arc offset is always in direction so that new arc is larger than its reference arced segment of lwpolyline - M.R[/color]
  2. (defun c:offs ( / [color="blue"]LM:listclockwise-p LM:defaultprops[/color] xy ob [color="red"]l i s p e d[/color] )
  3. (vl-load-com)
  4. [color="green"];; List Clockwise-p - Lee Mac
  5. ;; Returns T if the point list is clockwise oriented[/color]
  6. (defun LM:listclockwise-p ( lst )
  7.    (minusp
  8.      (apply '+
  9.        (mapcar
  10.          '(lambda( a b ) (- (* (car b) (cadr a)) (* (car a) (cadr b)))
  11.          )
  12.          lst (cons (last lst) lst)
  13.        )
  14.      )
  15.    )
  16. )
  17. [color="green"] ;; Default Properties  -  Lee Mac
  18. ;; Returns a list of DXF properties for the supplied DXF data,
  19. ;; substituting default values for absent DXF groups[/color]
  20. (defun LM:defaultprops ( enx )
  21.    (mapcar '(lambda ( x ) (cond ((assoc (car x) enx)) ( x )))
  22.     '(
  23.        (006 . "BYLAYER")
  24.        (008 . "0")
  25.        (039 . 0.0)
  26.        (048 . 1.0)
  27.        (062 . 256)
  28.        (370 . -1)
  29.      )
  30.    )
  31. )
  32. (prompt "\nSelect closed lwpolylines...")
  33. (and (setq s (ssget '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1))))
  34.    (progn (initget 7)
  35.      (setq xy '(( l )(if l (cons (list (car l)(cadr l)) (xy (cddr l)))))
  36.             d (getdist "\nPick or specify offset : ")
  37.      )
  38.    )
  39.       
  40.    (repeat (setq i (sslength s))
  41.      (setq e  (ssname s (setq i (1- i)))
  42.            ob (vlax-ename->vla-object e)
  43.            p  (LM:defaultprops (entget e))
  44.            l  (xy (vlax-get ob 'coordinates))
  45.      )
  46.      
  47.      (mapcar
  48.        '(lambda ( x )
  49.           (vl-catch-all-apply 'mapcar
  50.     (cons
  51.                '(lambda ( f / o b r) (setq f (eval (read (strcat "vlax-curve-get" f)))
  52.                                  r ( (if (LM:listclockwise-p l)
  53.                                        +
  54.                                        -
  55.                                        )
  56.                                        d
  57.                                       )
  58.                                 o (vl-catch-all-apply 'vlax-invoke (list x 'offset r ) )
  59.                          o (if (listp o)(car o) o )
  60.                                 )
  61.           
  62.              (if (and (= (vla-get-ObjectName x) "AcDbArc")
  63.                  (setq b (vl-catch-all-apply 'vlax-invoke (list x 'offset (- r)))
  64.                        b (if (listp b) (car b) b))
  65.                   )
  66.              
  67.               (if
  68.                  (apply
  69.                           '>
  70.                           (mapcar
  71.                             '(lambda (a / ) (atof (vl-princ-to-string (vl-catch-all-apply 'vlax-get (list a 'Radius)))))
  72.                              (list x b )
  73.                             )
  74.                   )
  75.                
  76.                  (vla-erase b)
  77.                  (progn (vla-erase o)(setq o b))
  78.                )
  79.               )
  80.             (entmakex (vl-list* '(0 . "LINE") (cons 10 (f x)) (cons 11 (f o)) p))
  81.              )
  82.              
  83.                     '(("startpoint" "endpoint"))
  84.        )
  85.      
  86.             ); catch
  87.    
  88.          (vla-erase x)
  89.        )
  90.        (vlax-invoke ob 'explode)
  91.      ) ;mapcar
  92.      
  93.    ) ;repeat
  94. ) ;and
  95. (princ)
  96. )
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 15:58:37 | 显示全部楼层
我修改了版本,加入了Truecolors。。。
回复

使用道具 举报

7

主题

26

帖子

19

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:02:32 | 显示全部楼层
 
谢谢你的帮助~
回复

使用道具 举报

7

主题

26

帖子

19

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:06:31 | 显示全部楼层
 
谢谢你的帮助~
回复

使用道具 举报

39

主题

180

帖子

141

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
195
发表于 2022-7-5 16:07:55 | 显示全部楼层
马尔科·里巴
 
我知道这本书最初是李写的,我并不是想从他那里拿走它,我只是为了我需要的东西而修改,但我需要一些帮助。如果有人能帮我,我将不胜感激。请看红色的评论。
 
  1. (defun c:segoff ( / a b d e i l n p s v x y z )
  2.    (initget 6)
  3.    (if (and (setq d (getdist "\nSpecify offset: "))
  4.             (setq s (ssget '((0 . "LWPOLYLINE") (-4 . "&=") (70 . 1) (-4 . "<NOT") (-4 . "<>") (42 . 0.0) (-4 . "NOT>"))))
  5.    (setq num -1)
  6.        )  
  7. (repeat (setq i (sslength s))
  8. (setq VlaObj (vlax-ename->vla-object (ssname s (setq num (1+ num)))))
  9. (vl-catch-all-apply 'vlax-put (list VlaObj 'Layer "LAYER NAME"))
  10.            (setq i (1- i)
  11.                  e (ssname s i)
  12.                  x (entget e)
  13.                  p (LM:defaultprops x)
  14.                  z (list (cdr (assoc 38 x)))
  15.                  l nil
  16.            )
  17.            (while (setq v (assoc 10 x))
  18.                (setq l (cons (append (cdr v) z) l)
  19.                      x (cdr (member v x))
  20.                )
  21.            )
  22.            (setq n (/ pi (if (LM:listclockwise-p l) 2 -2)))
  23.            (mapcar
  24.               '(lambda ( x y / a b )
  25.                    (setq a (+ (angle x y) n)
  26.                          b (list x (polar x a d) (polar y a d) y)
  27.                    )
  28.                    (mapcar
  29.                       '(lambda ( a b )
  30.       (entmake (vl-list* '(0 . "LINE") (cons 10 (trans a e 0)) (cons 11 (trans b e 0)) p))
  31.       (vl-catch-all-apply 'vlax-put (list (vlax-ename->vla-object (entlast)) 'Layer "LAYER NAME"))
  32.        )
  33.                        b (cdr b)
  34.                   )
  35.                )
  36.                (cons (last l) l) l
  37.            )
  38.        )
  39.    )
  40. (setq obj (vl-catch-all-apply 'vlax-invoke (list VlaObj 'explode))) [color=red];;; I'm trying to figure out how to collect the lines this creates to use on the next step[/color]
  41. (setq objLst(mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr(ssnamex obj)))))
  42. (vla-StartUndoMark (setq actDoc (vla-get-ActiveDocument (vlax-get-acad-object))))
  43. (foreach ln objLst (vlax-put ln 'startpoint (polar (vlax-get ln 'startpoint)(vlax-get ln 'angle)(- d))))
  44. (foreach ln objLst (vlax-put ln 'endpoint (polar (vlax-get ln 'endpoint)(vlax-get ln 'angle)d)))
  45. (vla-EndUndoMark actDoc)
  46.   (vl-catch-all-apply 'vla-delete (list VlaObj))
  47.    (princ)
  48. )
  49. ;; List Clockwise-p - Lee Mac
  50. ;; Returns T if the point list is clockwise oriented
  51. (defun LM:listclockwise-p ( lst )
  52.    (minusp
  53.        (apply '+
  54.            (mapcar
  55.                (function
  56.                    (lambda ( a b )
  57.                        (- (* (car b) (cadr a)) (* (car a) (cadr b)))
  58.                    )
  59.                )
  60.                lst (cons (last lst) lst)
  61.            )
  62.        )
  63.    )
  64. )
  65. ;; Default Properties  -  Lee Mac
  66. ;; Returns a list of DXF properties for the supplied DXF data,
  67. ;; substituting default values for absent DXF groups
  68. (defun LM:defaultprops ( enx )
  69.    (mapcar '(lambda ( x ) (cond ((assoc (car x) enx)) ( x )))
  70.       '(
  71.            (006 . "BYLAYER")
  72.            (008 . "TOP")
  73.            (039 . 0.0)
  74.            (048 . 1.0)
  75.            (062 . 256)
  76.            (370 . -1)
  77.        )
  78.    )
  79. )
  80. (princ)

 
 
谢谢
布瑞恩
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-5 16:12:51 | 显示全部楼层
@布莱恩,
 
 
要在vla爆炸后收集实体,我建议您使用类似的技术:
 
 
  1. 6
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 23:32 , Processed in 1.145602 second(s), 71 queries .

© 2020-2025 乐筑天下

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