乐筑天下

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

[编程交流] 修订Cloud Lisp-line widt

[复制链接]

4

主题

13

帖子

9

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 18:18:14 | 显示全部楼层 |阅读模式
我有一个“Revision Cloud”Lisp,它生成一个“rev Cloud”,然后插入修订标签。所有的作品都很漂亮,但这是我最后一份工作。我的新工作场所对rev clouds使用lisp命令,但它是基于多段线的,我的意思是,你要创建一条多段线来创建一个矩形。这是一个缓慢的过程。我想使用lisp命令来拾取对象。我的问题是,我需要使rev云的线宽变薄。我需要在lisp中插入一个“plinewid”函数,但不知道如何在保持云风格的同时做到这一点。我添加了lisp例程和它引用的标记。任何帮助都将不胜感激。还请告诉我我哪里做错了,我需要添加什么,为什么我真的想学习,而不仅仅是把它作为免费的lisp写作服务。非常感谢。
Revcloud new(2)。LSP
修订标签新。图纸
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 18:25:54 | 显示全部楼层
 
 
在插入rev块之前,添加:(命令“pedit”(entlast)“W”50”)
 
就在(setvar’attdia 0)之前
 
我用了50,但当然可以是0或1,随你怎么想。
 
如果我写了自己的revcloud,请参见http://www.cadtutor.net/forum/showthread.php?93423-RLX云
 
但可能有点“过头了”;-)这些部分与我工作中的其他一些常规程序结合在一起,因此它可能不是百分之百通用的,但尽管如此,我希望它可能是灵感/学习的来源。
 
祝你好运,雷克斯先生
回复

使用道具 举报

4

主题

13

帖子

9

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 18:36:44 | 显示全部楼层
谢谢你的回复和建议,我考虑添加一个命令来执行PEDIT。它在Lisp程序的工作,但我需要的风格保持书法。当我更改PEDIT/width大小时,它会去掉revcloud的书法风格。有办法吗?
 
谢谢你一如既往的指导,
吉姆
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 18:44:17 | 显示全部楼层
必须承认从未听说过书法风格(我想是语言障碍),但感谢上帝为谷歌:-)
 
 
确定多段线的起点和终点宽度。Dxf组40和41。编程例程以请求(新的)开始和结束宽度,或者用比例因子来缩放两者,应该不会太难。关于多段线的信息在这个网站或这里有很多http://www.afralisp.net/autolisp/tutorials/polylines-and-blocks.php
 
 
只需在顶点之间循环,并替换每个顶点的开始和结束宽度,或应用比例因子。不应该太复杂。
 
 
不幸的是,我(在这里工作)的时间到了。稍后会看一看,但也许其他人可以回答这个问题。。。
 
 
Gr.Rlx
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 18:54:20 | 显示全部楼层
只是快速。。。
 
 
  1. ;change cloud width
  2. ;based on info from [url]http://www.afralisp.net/visual-lisp/tutorials/polylines-part-1.php[/url]
  3. (defun c:ccw ( / cloud sw ew i)
  4. (vl-load-com)
  5. ;;; for testing
  6. (setq sw 0 ew 1)
  7. (if (and (setq i 0 cloud (car (entsel "\nSelect cloud : ")))
  8.    (= (vlax-get-property
  9. (setq cloud (vlax-ename->vla-object cloud)) 'ObjectName) "AcDbPolyline"))
  10.    (repeat (/ (length (vlax-safearray->list  (variant-value (vlax-get-property cloud 'coordinates)))) 2)
  11.      (vla-setwidth cloud i sw ew)
  12.      (setq i (1+ i))
  13.    )
  14. )
  15. )

 
 
Gr.Rlx
回复

使用道具 举报

4

主题

13

帖子

9

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 19:01:51 | 显示全部楼层
谢谢,这正是我需要它做的。
 
出于学习目的,我有两个问题-
 
1.我可以将ccw lisp添加到现有lisp中,以创建一个lisp,该lisp将生成一个修订云,然后指定宽度吗?
 
2.如何让ccw lisp请求SW和EW,而不在lisp中指定它们?
 
再次非常感谢你。
吉姆
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 19:08:46 | 显示全部楼层
 
 
试试这个:
 
 
  1. (defun c:ccw ( / cloud sw ew i)
  2. (vl-load-com)
  3. (command "_revcloud")(while (= 1 (logand (getvar "cmdactive") 1))(command pause))
  4. (setq i 0 cloud (entlast) sw (getreal "\nStart width : ") ew (getreal "\nEnd width : "))
  5. (if (and cloud sw ew
  6.    (= (vlax-get-property
  7. (setq cloud (vlax-ename->vla-object cloud)) 'ObjectName) "AcDbPolyline"))
  8.    (repeat (/ (length (vlax-safearray->list  (variant-value (vlax-get-property cloud 'coordinates)))) 2)
  9.      (vla-setwidth cloud i sw ew)
  10.      (setq i (1+ i))
  11.    )
  12. )
  13. )
Rlx级
 
 
哦,是的,问题1:是的:-)
 
 
顺便说一句,现在每次你必须指定开始/结束宽度,也许默认值会更好。
 
 
检查以下链接:http://www.lee-mac.com/promptwithdefault.html
回复

使用道具 举报

4

主题

13

帖子

9

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 19:13:51 | 显示全部楼层
当我学习编写lisp命令时,我想确保我理解。如果在命令后加上“a”,它会提示输入?
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 19:22:48 | 显示全部楼层
 
 
不。。。如果您提到使用命令功能,请将命令放在“”(命令行)或(命令“revcloud”)之间。但就像在菜单文件中一样,功能在完成时停止。如果您知道要在两点之间画一条线,可以使用(命令“line”pause pause)。
 
 
然后,命令功能将等待2次。但有时你不知道你要画多少条线,所以你不知道你需要多少停顿。或者在打印文件的脚本中,图形在尝试打开时可以是只读的。那么,能够有一个“额外的”停顿就好了。这就是while-cmdactive部分的用武之地。但是现在不要太担心。最好的学习方法是从一个工作程序开始,把它搞砸,然后试着修复它:-)
 
 
gr.Rlx
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-19 00:29 , Processed in 2.246357 second(s), 71 queries .

© 2020-2025 乐筑天下

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