乐筑天下

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

[编程交流] Lisp用于同一个中的双偏移

[复制链接]

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:29:32 | 显示全部楼层
嗯,我不确定是什么问题,但试着先写一下:
(initcommandversion 1),然后调用OFFSET命令
尝试使用0 1 2 3之类的值,直到您看到:
  1. Specify offset distance or [Through/[color="red"]Erase[/color]/Layer] <500.0000>:

然后使用此简单检查确认其工作:
  1. (and
  2. (setq e (car (entsel)))
  3. (setq p (getpoint))
  4. (initcommandversion [color="red"]x[/color])[color="darkgreen"]; adjust x with the value[/color]
  5. (command "_.OFFSET" 500 e "_non" p "E") [color="darkgreen"]; offset the entity "e" on 500 units distance, oriented on the "p" side[/color]
  6. )
回复

使用道具 举报

24

主题

141

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2022-7-5 17:31:38 | 显示全部楼层
你好,Grrr
 
不幸的是没有效果。
仍然显示错误消息。
回复

使用道具 举报

26

主题

89

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 17:36:23 | 显示全部楼层
大家好。。
谢谢你的代码员。。
你的代码和我想的一样。
但它不是偏移多段线。。我需要偏移线和多段线。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:40:00 | 显示全部楼层
 
然后试试这个:
  1. [b][color=BLACK]([/color][/b]defun C:test [b][color=FUCHSIA]([/color][/b] / *error* acDoc sUndo Svars R n oLst o ang[b][color=FUCHSIA])[/color][/b]
  2. [b][color=FUCHSIA]([/color][/b]defun *error* [b][color=NAVY]([/color][/b]m[b][color=NAVY])[/color][/b]
  3.         [b][color=NAVY]([/color][/b]and sUndo [b][color=MAROON]([/color][/b]vla-EndUndoMark acDoc[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]redraw[b][color=NAVY])[/color][/b]
  4.         [b][color=NAVY]([/color][/b]and Svars [b][color=MAROON]([/color][/b]mapcar 'setvar [b][color=GREEN]([/color][/b]mapcar 'car Svars[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]mapcar 'cdr Svars[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  5.         [b][color=NAVY]([/color][/b]and m [b][color=MAROON]([/color][/b]print m[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  6.         [b][color=NAVY]([/color][/b]princ[b][color=NAVY])[/color][/b]
  7. [b][color=FUCHSIA])[/color][/b][color=#8b4513]; defun *error*[/color]
  8. [b][color=FUCHSIA]([/color][/b]setq acDoc [b][color=NAVY]([/color][/b]vla-get-ActiveDocument [b][color=MAROON]([/color][/b]vlax-get-acad-object[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  9. [b][color=FUCHSIA]([/color][/b]vla-EndUndoMark acDoc[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]setq sUndo [b][color=NAVY]([/color][/b]not [b][color=MAROON]([/color][/b]vla-StartUndoMark acDoc[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  10. [b][color=FUCHSIA]([/color][/b]setq Svars [b][color=NAVY]([/color][/b]mapcar [b][color=MAROON]([/color][/b]function [b][color=GREEN]([/color][/b]lambda [b][color=BLUE]([/color][/b]x[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cons x [b][color=RED]([/color][/b]getvar x[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] '[b][color=MAROON]([/color][/b][color=#2f4f4f]"CLIPROMPTLINES"[/color] [color=#2f4f4f]"PICKBOX"[/color] [color=#2f4f4f]"CMDECHO"[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  11. [b][color=FUCHSIA]([/color][/b]and Svars [b][color=NAVY]([/color][/b]mapcar 'setvar [b][color=MAROON]([/color][/b]mapcar 'car Svars[b][color=MAROON])[/color][/b] '[b][color=MAROON]([/color][/b]0 12 0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  12. [b][color=FUCHSIA]([/color][/b]setvar 'errno 0[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]redraw[b][color=FUCHSIA])[/color][/b]
  13. [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]/= 52 [b][color=MAROON]([/color][/b]getvar 'errno[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  14.         [b][color=NAVY]([/color][/b]initget 128 [color=#2f4f4f]"Distance"[/color][b][color=NAVY])[/color][/b]
  15.         [b][color=NAVY]([/color][/b]setq R [b][color=MAROON]([/color][/b]entsel [b][color=GREEN]([/color][/b]strcat [color=#2f4f4f]"\nSpecify side to offset or [D]istance "[/color] [b][color=BLUE]([/color][/b]if oLst [b][color=RED]([/color][/b]vl-princ-to-string [b][color=PURPLE]([/color][/b]reverse oLst[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [color=#2f4f4f]""[/color][b][color=BLUE])[/color][/b] [color=#2f4f4f]" <exit>: "[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
  16.         [b][color=NAVY]([/color][/b]cond
  17.                 [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= 7 [b][color=BLUE]([/color][/b]getvar 'errno[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\nNothing selected."[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setvar 'errno 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
  18.                 [b][color=MAROON]([/color][/b] [b][color=GREEN]([/color][/b]= 'STR [b][color=BLUE]([/color][/b]type R[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  19.                         [b][color=GREEN]([/color][/b]while [b][color=BLUE]([/color][/b]setq n [b][color=RED]([/color][/b]getreal [b][color=PURPLE]([/color][/b]strcat [color=#2f4f4f]"\nSpecify offset value from the curve "[/color] [b][color=TEAL]([/color][/b]if oLst [b][color=OLIVE]([/color][/b]vl-princ-to-string [b][color=GRAY]([/color][/b]reverse oLst[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] [color=#2f4f4f]""[/color][b][color=TEAL])[/color][/b] [color=#2f4f4f]" <enter>: "[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  20.                                 [b][color=BLUE]([/color][/b]princ [b][color=RED]([/color][/b]strcat [color=#2f4f4f]"\nOffset values: "[/color] [b][color=PURPLE]([/color][/b]vl-princ-to-string [b][color=TEAL]([/color][/b]reverse [b][color=OLIVE]([/color][/b]setq oLst [b][color=GRAY]([/color][/b]cons n oLst[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  21.                         [b][color=GREEN])[/color][/b]
  22.                         [b][color=GREEN]([/color][/b]setq oLst [b][color=BLUE]([/color][/b]reverse oLst[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  23.                 [b][color=MAROON])[/color][/b]
  24.                 [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]and [b][color=BLUE]([/color][/b]vl-consp R[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]eq 'ENAME [b][color=RED]([/color][/b]type [b][color=PURPLE]([/color][/b]car R[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]setq o [b][color=RED]([/color][/b]vlax-ename->vla-object [b][color=PURPLE]([/color][/b]car R[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]not [b][color=RED]([/color][/b]vlax-method-applicable-p o 'Offset[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  25.                         [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\nThis object can not be offseted."[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq o nil[b][color=GREEN])[/color][/b]
  26.                 [b][color=MAROON])[/color][/b]
  27.                 [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]and o [b][color=BLUE]([/color][/b]eq [b][color=RED]([/color][/b]vla-get-Lock [b][color=PURPLE]([/color][/b]vla-item [b][color=TEAL]([/color][/b]vla-get-Layers acDoc[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]vla-get-Layer o[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] :vlax-true[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  28.                         [b][color=GREEN]([/color][/b]princ [color=#2f4f4f]"\nThis object is on a locked layer."[/color][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq o nil[b][color=GREEN])[/color][/b]
  29.                 [b][color=MAROON])[/color][/b]
  30.                 [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]and o [b][color=BLUE]([/color][/b]not oLst[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  31.                         [b][color=GREEN]([/color][/b]grdraw [b][color=BLUE]([/color][/b]cadr R[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]vlax-curve-getClosestPointTo o [b][color=RED]([/color][/b]cadr R[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] 1 7[b][color=GREEN])[/color][/b]
  32.                         [b][color=GREEN]([/color][/b]setq ang [b][color=BLUE]([/color][/b]angle [b][color=RED]([/color][/b]vlax-curve-getClosestPointTo o [b][color=PURPLE]([/color][/b]cadr R[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]cadr R[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  33.                         [b][color=GREEN]([/color][/b]while [b][color=BLUE]([/color][/b]setq n [b][color=RED]([/color][/b]getreal [b][color=PURPLE]([/color][/b]strcat [color=#2f4f4f]"\nSpecify offset value from the curve "[/color] [b][color=TEAL]([/color][/b]if oLst [b][color=OLIVE]([/color][/b]vl-princ-to-string [b][color=GRAY]([/color][/b]reverse oLst[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] [color=#2f4f4f]""[/color][b][color=TEAL])[/color][/b] [color=#2f4f4f]" <enter>: "[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  34.                                 [b][color=BLUE]([/color][/b]princ [b][color=RED]([/color][/b]strcat [color=#2f4f4f]"\nOffset values: "[/color] [b][color=PURPLE]([/color][/b]vl-princ-to-string [b][color=TEAL]([/color][/b]reverse [b][color=OLIVE]([/color][/b]setq oLst [b][color=GRAY]([/color][/b]cons n oLst[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
  35.                         [b][color=GREEN])[/color][/b]
  36.                         [b][color=GREEN]([/color][/b]and [b][color=BLUE]([/color][/b]vl-consp oLst[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]apply 'and [b][color=RED]([/color][/b]mapcar 'numberp oLst[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]setvar 'errno 52[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
  37.                 [b][color=MAROON])[/color][/b]
  38.                 [b][color=MAROON]([/color][/b] [b][color=GREEN]([/color][/b]and o [b][color=BLUE]([/color][/b]vl-consp oLst[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]apply 'and [b][color=RED]([/color][/b]mapcar 'numberp oLst[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setvar 'errno 52[b][color=GREEN])[/color][/b] [b][color=MAROON])[/color][/b]
  39.                 [b][color=MAROON]([/color][/b]T nil[b][color=MAROON])[/color][/b]
  40.         [b][color=NAVY])[/color][/b][color=#8b4513]; cond        [/color]
  41. [b][color=FUCHSIA])[/color][/b][color=#8b4513]; while[/color]
  42. [b][color=FUCHSIA]([/color][/b]and o ang oLst
  43.         [b][color=NAVY]([/color][/b]foreach x oLst
  44.                 [b][color=MAROON]([/color][/b]vla-Offset o
  45.                         [b][color=GREEN]([/color][/b]cond
  46.                                 [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]= ang 0[b][color=RED])[/color][/b] x[b][color=BLUE])[/color][/b] [color=#8b4513]; Right [Direction][/color]
  47.                                 [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]equal ang [b][color=PURPLE]([/color][/b]/ PI 2.[b][color=PURPLE])[/color][/b] 1e-2[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]- x[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [color=#8b4513]; UP[/color]
  48.                                 [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]equal ang PI 1e-2[b][color=RED])[/color][/b] x[b][color=BLUE])[/color][/b] [color=#8b4513]; Left[/color]
  49.                                 [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]equal ang [b][color=PURPLE]([/color][/b]* 1.5 PI[b][color=PURPLE])[/color][/b] 1e-2[b][color=RED])[/color][/b] x[b][color=BLUE])[/color][/b] [color=#8b4513]; Down[/color]
  50.                                 [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]< 0 ang [b][color=PURPLE]([/color][/b]/ PI 2.[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]- x[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [color=#8b4513]; Right Up [Quadrant][/color]
  51.                                 [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]< [b][color=PURPLE]([/color][/b]/ PI 2.[b][color=PURPLE])[/color][/b] ang PI[b][color=RED])[/color][/b] x[b][color=BLUE])[/color][/b] [color=#8b4513]; Left Up[/color]
  52.                                 [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]< PI ang [b][color=PURPLE]([/color][/b]* PI 1.5[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] x[b][color=BLUE])[/color][/b] [color=#8b4513]; Left Down[/color]
  53.                                 [b][color=BLUE]([/color][/b] [b][color=RED]([/color][/b]< [b][color=PURPLE]([/color][/b]* PI 1.5[b][color=PURPLE])[/color][/b] ang [b][color=PURPLE]([/color][/b]* PI 2[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]- x[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [color=#8b4513]; Right Down[/color]
  54.                         [b][color=GREEN])[/color][/b][color=#8b4513]; cond[/color]
  55.                 [b][color=MAROON])[/color][/b][color=#8b4513]; vla-Offset[/color]
  56.         [b][color=NAVY])[/color][/b][color=#8b4513]; foreach ;  [b][color=NAVY]([/color][/b]command [color=#2f4f4f]"_.OFFSET"[/color] x [b][color=MAROON]([/color][/b]car R[b][color=MAROON])[/color][/b] [color=#2f4f4f]"_non"[/color] [b][color=MAROON]([/color][/b]cadr R[b][color=MAROON])[/color][/b] [color=#2f4f4f]"E"[/color][b][color=NAVY])[/color][/b] [/color]
  57. [b][color=FUCHSIA])[/color][/b][color=#8b4513]; and[/color]
  58. [b][color=FUCHSIA]([/color][/b]and sUndo [b][color=NAVY]([/color][/b]vla-EndUndoMark acDoc[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  59. [b][color=FUCHSIA]([/color][/b]and Svars [b][color=NAVY]([/color][/b]mapcar 'setvar [b][color=MAROON]([/color][/b]mapcar 'car Svars[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]mapcar 'cdr Svars[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  60. [b][color=FUCHSIA]([/color][/b]redraw[b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]princ[b][color=FUCHSIA])[/color][/b]
  61. [b][color=BLACK])[/color][/b][color=#8b4513];| defun |; [b][color=BLACK]([/color][/b]vl-load-com[b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]princ[b][color=BLACK])[/color][/b][/color]

由于方向问题,我真的尽量避免vla偏移。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:40:57 | 显示全部楼层
 
就这么简单。
  1. (defun c:test (/ s p)
  2. (while (and (setq s (car (entsel "\nSelect line to offset :")))
  3.               (wcmatch (cdr (assoc 0 (entget s))) "LINE,*POLYLINE")
  4.               (setq p (getpoint "\nSpecify offset side :"))
  5.          )
  6.          (foreach x '(1.7 1.75)
  7.            (command "_.offset" x (ssadd s) "_non" p "")
  8.          )
  9.        )
  10. (princ)
  11. )
回复

使用道具 举报

24

主题

141

帖子

115

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
123
发表于 2022-7-5 17:45:38 | 显示全部楼层
 
你好,Grrr
 
完美的
正在工作!非常感谢。
回复

使用道具 举报

26

主题

89

帖子

68

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
135
发表于 2022-7-5 17:47:59 | 显示全部楼层
非常感谢你,塔尔瓦特。
现在它工作得很好。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:52:48 | 显示全部楼层
 
不客气。
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 17:55:06 | 显示全部楼层
尽管我试图用(cond)解决这个问题,但偏移方向仍然是一个问题。也许其他人可以对此做出贡献。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 17:56:29 | 显示全部楼层
 
您需要测试多段线方向-请参见本例。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 12:20 , Processed in 0.427812 second(s), 82 queries .

© 2020-2025 乐筑天下

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