乐筑天下

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

[编程交流] 按p偏移构造线

[复制链接]

9

主题

23

帖子

14

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 16:27:47 | 显示全部楼层 |阅读模式
大家好,
 
我有Ranjit的代码:
 
  1. (defun c:edb () (c:ebd))
  2. (defun c:ebd ( / *error* of undo doc ss ) ;Ekv Both
  3. (defun *error* ( msg )
  4. (and undo (vla-EndUndomark doc))
  5. (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")
  6. (princ (strcat "\n** Error: " msg " **")))
  7. (princ))
  8. (if (and (ssget '((0 . "ARC,CIRCLE,ELLIPSE,*LINE")))
  9. (setq of (getdist "\nSpecify Offset Distance: ")))
  10. (progn
  11. (setq undo (not (vla-StartUndomark (setq doc (vla-get-ActiveDocument (vlax-get-acad-object))))))
  12. (vlax-for obj (setq ss (vla-get-ActiveSelectionSet doc))
  13. (mapcar (function (lambda (o) (vl-catch-all-apply (function vla-offset) (list obj o))))
  14. (list of (- of)))(vla-delete obj))
  15. (setq undo (vla-EndUndoMark doc))))
  16. (princ)
  17. )

如果单击一条线并指定一个距离,它会在两侧绘制具有指定距离的偏移线,并删除原始线。
 
我想更改代码,使其保留直线,但将其更改为中心线,另一层称为红色中心线。
它将绘制构造线,而不是绘制线条。
 
http://imgur.com/a/J1q0p
回复

使用道具 举报

4

主题

78

帖子

74

银币

初来乍到

Rank: 1

铜币
20
发表于 2022-7-5 17:05:38 | 显示全部楼层
我来看看李·麦克的双偏移命令。我知道它有选项,但不确定它是否有更改中心线层的选项。
http://www.lee-mac.com/doubleoffset.html
回复

使用道具 举报

9

主题

23

帖子

14

银币

初来乍到

Rank: 1

铜币
45
发表于 2022-7-5 17:21:58 | 显示全部楼层
你好,我是科吉尔,
 
这非常接近我需要的,但我需要偏移线-构造线,
我选的那条线是红色的图层构造线,
所有这一切都只需要一个命令,这意味着当拾取线时,它会将其更改为一个新层,名为红色的构造线,线型将为虚点(轴线)。
 
有了这段代码,我想让我的工作更快。
提前谢谢你。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:35:20 | 显示全部楼层
从头开始重新编码可能更容易,如果您查看构造线的工作方式,它会要求拾取obj点,然后是偏移量。所以你可以选择一条线的中心,计算出中心点左右偏移的平方,然后用这个点。需要检查对象的圆弧和圆,但想法相同。
 
  1. (defun c:2xl ( / obj pt1 pt2 start end off)
  2. (setq oldaunits (getvar "aunits"))
  3. (setq obj (vlax-ename->vla-object (car (entsel "\nPick object"))))
  4. (setq start (vlax-safearray->list (vlax-variant-value(vla-get-startpoint obj))))
  5. (setq end (vlax-safearray->list (vlax-variant-value (vla-get-endpoint obj))))
  6. (setvar "aunits" 3)
  7. (setq pt (polar start (angle start end)(/ (distance start end) 2.0)))
  8. (vla-put-layer obj "Centerline")
  9. (setvar "clayer" "Construction")
  10. (setq off (getdist "Enter offset  "))
  11. (setq pt1 (polar pt (+ (angle start end)(/ pi 2.0)) off))
  12. (setq pt2 (polar pt (- (angle start end)(/ pi 2.0)) off))
  13. (command "constructionline" pt pt1 "" "")
  14. (command "constructionline" pt pt2 "" "")
  15. (setvar "Aunits" oldaunits)
  16. )
  17. (c:2x1)
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:09 , Processed in 0.433261 second(s), 60 queries .

© 2020-2025 乐筑天下

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