乐筑天下

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

[编程交流] 偏移命令w需要Lisp

[复制链接]

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 16:51:21 | 显示全部楼层
这就是我想到的。我一直得到一个错误的输入错误列表加载时,我不知道为什么。我需要用“(progn)”围绕所有内容吗?我使用_:L选择,因为它允许我选择多个对象。我已经通读了这些选项,我很难判断这是否是最好的选择。
使用ActiveX(right?lol)深入到这里给出的第二个代码有点让我不知所措。
 
编辑:此外,最后一个选择是否会从多个选择中获取新的偏移线?假设我偏移了6条矩形多段线,我希望它抓住每一条新的偏移线并更改线型。对于这个应用程序,可能需要使用ActiveX代码。
 
实际上,im拍摄的目的是使用此命令所需的唯一用户干预将是选择对象。
 
  1. (defun c:GPOFF (/ ss e)
  2.   (setq ss (ssget "_:L")
  3.       (command "_.offset" "3'-0" ss "_non" "0,0" "")
  4.        (setq e (entlast))
  5.         (command "_.chprop" e "" "_LTYPE" "DASHDOT" "")
  6.     (princ)
  7. )
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:55:49 | 显示全部楼层
 
常见错误缺少括号“(”“)”
 
Tharwat搜索关键字“vla offset”的简单示例
回复

使用道具 举报

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 16:58:51 | 显示全部楼层
非常感谢。这使命令得以运行,但不幸的是,它只偏移了最后选定的矩形。我假设这是因为我只使用命令标注。回到绘图板!
 
  1. (defun c:GPOFF ( / ss e)
  2.   (setq ss (ssget "_:L"))
  3.       (command "_.offset" "3'" ss "_non" "0,0" "")
  4.        (setq e (entlast))
  5.         (command "_.chprop" e "" "_LTYPE" "DASHDOT" "")
  6.     (princ)
  7. )
回复

使用道具 举报

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 17:04:23 | 显示全部楼层
我取得了一些进步!我让它完全按照我想要的做,但它正在将原始选定的线更改为DASHDOT以及新创建的偏移线。看看这个,我很难理解什么,如果有的话,变量指的是已经创建的新行。有人有什么建议吗?
 
  1. (defun c:test ( / ss->lst pairpts revpl dist ss )
  2. (vl-load-com)
  3. (defun ss->lst ( ss flag / id lst )
  4.    (if (eq 'PICKSET (type ss))
  5.      (repeat (setq id (sslength ss))
  6.        (
  7.          (lambda ( name )
  8.            (setq lst
  9.              (cons
  10.                (if flag (vlax-ename->vla-object name)
  11.                  name
  12.                )lst
  13.              )
  14.            )
  15.          )(ssname ss (setq id (1- id)))
  16.        )
  17.      )
  18.    )
  19. )
  20. (defun pairpts ( _list / l pt )
  21.    (foreach x (reverse _list)
  22.      (if pt
  23.        (setq l (cons (cons x pt) l) pt nil)
  24.        (setq pt (cons x pt))
  25.      )
  26.    ) l
  27. )
  28. (defun revpl ( vla-obj / catch openpl )
  29.    (and (eq :vlax-false (setq openpl (vla-get-closed vla-obj)))
  30.      (vla-put-closed vla-obj :vlax-true)
  31.    )
  32.    (setq catch
  33.      (vl-catch-all-apply (function vlax-invoke)
  34.        (list vla-obj
  35.          'offset (vla-get-length vla-obj)
  36.        )
  37.      )
  38.    )
  39.    (and (eq :vlax-false openpl)
  40.      (vla-put-closed vla-obj :vlax-false)
  41.    )
  42.    (if (vl-catch-all-error-p catch)
  43.      (vlax-put vla-obj 'coordinates
  44.        (apply (function append)
  45.          (reverse
  46.            (pairpts (vlax-get vla-obj 'coordinates))
  47.          )
  48.        )
  49.      ) (and catch (vla-delete (car catch)))
  50.    )
  51.    vla-obj
  52. )
  53. (if (and (setq dist (distance '(0.0 0.0) '(36.0 0.0)))
  54.    (setq ss (ss->lst (ssget '((0 . "lwpolyline"))) t)))
  55.    (foreach x ss
  56.      (vla-put-linetype x "DASHDOT")
  57.        (car
  58.          (vlax-invoke (revpl x)
  59.            'offset dist
  60.          )
  61.        )
  62.    )
  63. ) (princ)
  64. )
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 17:05:05 | 显示全部楼层
 
更改为:
  1. (foreach x ss (vla-put-linetype (car (vlax-invoke (revpl x) 'offset dist)) "DASHDOT"))

 
顺便提一下您应该检查DASHDOT是否已加载,否则程序将失败。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 20:59 , Processed in 0.601220 second(s), 60 queries .

© 2020-2025 乐筑天下

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