明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 13432|回复: 23

[单线变双线,并保留原线]

  [复制链接]
发表于 2004-2-9 10:31:00 | 显示全部楼层 |阅读模式
[单线变双线,并保留原线]实现变道路的中心线为道路双线


如何实现下列功能:选中一条直线L(线型为虚线),以此线L为中心,各向两边OFFSET,距离直线L均为a,OFFSET后生成的两条线为实线(CONTINUIOUS),原直线L不变。
发表于 2004-2-10 01:21:00 | 显示全部楼层
  1. (defun c:x2 (/ ss vss dist)
  2.    (princ "\n单线变双v.1.1-------by 无痕.2004.2\n选择要变双的曲线:")
  3.    (setq ss (ssget   '((0 . "*line,arc,ellipse,circle")) )
  4.   vss (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
  5.                dist (getdist "\n输入偏移距离:"))
  6.    (vlax-for obj vss (vla-offset obj dist)(vla-offset obj (- 0 dist)))
  7. )

点评

在对象模型里,我增加了pline,经过测试,能正常运行  发表于 2014-6-4 10:53
非常好用的程序 建议里面增加(vl-load-com)  发表于 2014-6-4 10:52
发表于 2004-2-9 12:40:00 | 显示全部楼层
用VLISP中的OFFSET方法
发表于 2004-2-9 21:23:00 | 显示全部楼层
;线段双向偏移
;ljc.2004.2
(DEFUN C:OO( / qd zd name2 ss qd1 zd1 CD tc os cdq )
(setq os(getvar "osmode"))
(command "osnap" "off")
(setq cd(getint "请输入偏移距离:"))
(if (= cd nil) (SETQ CD CCD))
(setq ss (ssget '((0 . "LINE")) ) )
(print "请选择线段:")
(SETQ N (SSLENGTH SS))
(SETQ A (- N 1))
(REPEAT N
(setq name(ssname ss A))
(setq q(entget name))
(setq Zd (cdr(assoc 11 q)) qd (cdr(assoc 10 q)) )
(SETQ ANG (ANGLE QD ZD))
(SETQ qdz (polar qd (+ ANG ( / PI 2)) cd) qdy (polar qd (- ANG ( / PI 2)) cd))
(command "offset" cd name qdz "")
(command "change" (entlast) "" "p" "lt" "CONTINUOUS" "" "")
(command "offset" cd name qdy "")
(command "change" (entlast) "" "p" "lt" "CONTINUOUS" "" "")
(command)
(SETQ A (- A 1))
)
(SETQ CCD CD)
(setvar "osmode" os)

)
发表于 2004-2-9 21:53:00 | 显示全部楼层
好程序~~画路边线就简单了!
发表于 2004-2-9 22:04:00 | 显示全部楼层
高手能不能把程序扩展一下,让它能使用于其它的线:         pline.....

发表于 2004-2-10 09:08:00 | 显示全部楼层
樓上的這個是我目前見到最簡短的.
发表于 2004-2-10 12:45:00 | 显示全部楼层
命令: _appload 已成功加载 x2.lsp。
命令:
命令: 命令: x2 单线变双v.1.1-------by 无痕.2004.2
选择要变双的曲线:
选择对象: 指定对角点: 找到 6 个 选择对象:
; 错误: no function definition: VLAX-GET-ACAD-OBJECT
这是什么原因?
发表于 2004-2-10 13:00:00 | 显示全部楼层
谢谢无痕的帮助!!
发表于 2004-2-10 13:26:00 | 显示全部楼层
ljcgq发表于2004-2-10 12:45:00命令: _appload 已成功加载 x2.lsp。命令:命令:命令: x2单线变双v.1.1-------by 无痕.2004.2选择要变双的曲线:选择对象: 指定对角点...
先运行(vl-load-com)。改一下过滤,重贴
  1. (defun c:x2 (/ ss vss dist)     (vl-load-com)
  2.    (princ "\n单线变双v.1.1-------by 无痕.2004.2\n选择要变双的曲线:")
  3.    (setq ss (ssget   '((0 . "Arc,Circle,Ellipse,Line,LwPolyline,Polyline,Spline,XLine")) )
  4.   vss (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))
  5.                dist (getdist "\n输入偏移距离:"))
  6.    (vlax-for obj vss (vla-offset obj dist)(vla-offset obj (- 0 dist)))
  7. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-24 03:00 , Processed in 0.184856 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表