乐筑天下

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

[编程交流] 多偏移代码帮助

[复制链接]

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:14:19 | 显示全部楼层 |阅读模式
大家好,
 
我需要的是在这张图片中解释的:
 

                               
登录/注册后可看大图

 
假设我在绘图中有一条多段线/圆/直线/圆弧。我想在我选择的方向和我输入的距离上偏移它两次。所以它就像法线偏移命令一样,但我需要在同一方向上执行两次。我需要的另一件事是改变颜色。选定对象的颜色必须为“青色”,第一个偏移必须为白色,第二个偏移必须再次为“青色”。这就是全部。
 
这是我在互联网上找到的代码(我想是在这个论坛上)。我把它改成只有2个偏移量,这是一个多偏移量代码。它工作得很好,我只需要在混合中添加颜色更改代码:
 
  1. (defun c:test (/ s i d p v)
  2. ;;; Tharwat 14. Dec. 2011 ;;;
  3. (if (and (setq s (car (entsel "\n Select entity :")))
  4.           ;(member (cdr (assoc 0 (entget s))) '("LINE" "CIRCLE" "ARC" "ELLIPSE")) ;I had to removed this part (wasnt working with polylines)
  5.           (setq i 2)
  6.           (setq d (getdist "\n Distance of offset :"))
  7.           (setq p (getpoint "\n Specify point on side to offset :"))
  8.           (setq v d)
  9.      )
  10.    (repeat i (command "_.offset" d s p "") (setq d (+ d v)))
  11.    (princ)
  12. )
  13. (princ)
  14. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:24:19 | 显示全部楼层
看看这个。。。。
 
  1. (defun c:TesT (/ s d p)
  2. (vl-load-com)
  3. ;;; Tharwat 24. Feb. 2012 ;;;
  4. (if
  5.    (and
  6.      (setq s (car (entsel "\n Select entity :")))
  7.      (member (cdr (assoc 0 (entget s)))
  8.              '("LWPOLYLINE" "POLYLINE" "LINE" "CIRCLE" "ARC" "ELLIPSE")
  9.      )
  10.      (setq d (getdist "\n Distance of offset :"))
  11.      (setq p (getpoint "\n Specify point on side to offset :"))
  12.    )
  13.     (progn
  14.       (command "_.offset" d s p "")
  15.       (command "_.chprop" (entlast) "" "color" "WHITE" "")
  16.       (command "_.offset" (+ d d) s p "")
  17.       (command "_.chprop" (entlast) "" "color" "CYAN" "")
  18.     )
  19.     (princ)
  20. )
  21. (princ)
  22. )
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 08:28:22 | 显示全部楼层
我需要将选定实体的颜色也更改为青色。我试着用:
 
  1. (command "_.chprop" (s) "" "color" "CYAN" "")
但不起作用。据我所知,您将所选实体的“名称”存储在“s”中。Entlast还返回最后添加的实体的“名称”,因此它应该可以工作,但可能是不兼容的数据类型?
 
编辑:哦,没关系,我明白了,我不需要括号。现在可以工作了。谢谢。
编辑2:修复末尾缺少的paren。
 
  1. (defun c:TesT (/ s d p)
  2. (vl-load-com)
  3. ;;; Tharwat 24. Feb. 2012 ;;;
  4. (if
  5.    (and
  6.      (setq s (car (entsel "\n Select entity :")))
  7.      (member (cdr (assoc 0 (entget s)))
  8.              '("LWPOLYLINE" "POLYLINE" "LINE" "CIRCLE" "ARC" "ELLIPSE")
  9.      )
  10.      (setq d (getdist "\n Distance of offset :"))
  11.      (setq p (getpoint "\n Specify point on side to offset :"))
  12.    )
  13.     (progn
  14.       (command "_.offset" d s p "")
  15.       (command "_.chprop" s "" "color" "CYAN" "")
  16.       (command "_.chprop" (entlast) "" "color" "WHITE" "")
  17.       (command "_.offset" (+ d d) s p "")
  18.       (command "_.chprop" (entlast) "" "color" "CYAN" "")
  19.     )
  20.     (princ)
  21. )
  22. (princ)
  23. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:33:41 | 显示全部楼层
 
不客气。
 
您修改的例程最后缺少一个paren。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:35:03 | 显示全部楼层
另一个
 
  1. (defun c:test ( / clr ss e d)
  2. (setq dist (cond ((getdist
  3.                                       (strcat
  4.                                             "\nSpecify Offset Distance"
  5.                                             (if (numberp dist)
  6.                                                   (strcat " <"
  7.                                                           (rtos dist 2 2)
  8.                                                           ">: ")
  9.                                                   ": "
  10.                                                   ))))
  11.                                (dist)))
  12. (while (and dist
  13.            (setq ss (ssget "_:S:E:L"))
  14.     (vlax-method-applicable-p (vlax-ename->vla-object (setq e (ssname ss 0))) 'Offset)
  15.            (setq clr "7" d dist  pt (getpoint "\nSide to Offset")))
  16.            (repeat 2
  17. (command "_.offset"  d e pt "" "_chprop" (entlast) "" "_color" clr  "")
  18.                 (setq clr "4" d (+ d dist))
  19.          
  20.                  )
  21.       [color=blue][b] (command "_chprop" e "" "_color" clr "")
  22. [/b][/color]       )
  23. (princ)      
  24. )

 
HTH公司
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:40:27 | 显示全部楼层
 
 
你好,pBe。
 
需要一行代码
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:47:01 | 显示全部楼层
我更新了帖子。。在匆忙编写代码时,这总是一个问题
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 08:53:51 | 显示全部楼层
 
同意。
 
顺便说一句,这是一种很好的编码方式。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:54:27 | 显示全部楼层
 
谢谢tharwat
 
我养成了不检查语法就复制和粘贴其他代码片段的习惯。因此编码错误
无论如何。。。
 
干杯
回复

使用道具 举报

1

主题

4

帖子

3

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 09:00:06 | 显示全部楼层
 
嘿,也谢谢你。我喜欢它记住最后一个偏移距离并继续偏移命令,直到你们点击回车键,但它仍然不会将选定实体的颜色更改为青色。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-9 09:10 , Processed in 0.363526 second(s), 76 queries .

© 2020-2025 乐筑天下

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