找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2205|回复: 18

[编程申请]:能否做一个超级offset的程序

[复制链接]
发表于 2003-6-10 11:34:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
运行时,先输入距离,然后在一个封闭的图形中点一点,即可将各线段向内offset所定距离,本自动剪切。
见附图
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-6-10 11:59:00 | 显示全部楼层
有时在封闭图形内还有其他实体, 点击图形内一点容易引起混乱.
为什么不能点击该封闭曲线呢(用OFFSET即可)?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-10 15:00:58 | 显示全部楼层
选择封闭曲线也可以,能实现是最关键的,一般来说,边框线是line,如果窗选后,输入值>0,
外偏,<0内偏,请高手帮忙呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-6-10 18:30:54 | 显示全部楼层
最初由 coolzhb 发布
[B]选择封闭曲线也可以,能实现是最关键的,一般来说,边框线是line,如果窗选后,输入值>0,
外偏,<0内偏,请高手帮忙呀 [/B]


以前已经给大家写过了, 请看:

晓东工具箱--曲线工具--多重偏移, 可以批量选实体, 进行偏移, 数值为正, 向增大的方向偏, 为负, 向减少的方向偏.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-6-11 13:51:43 | 显示全部楼层
Xd大哥,能把你的程序贴出来吗,我想实现一些功能定制
我其实想做个设备基础的绘图程序,一般我们画好外框,再offset,变成钢筋,在剪切等修改,如果能有一个程序,在外框画好的基础上,在内部一点,即画好钢筋就好了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-6 11:12:46 | 显示全部楼层
我将xd的lisp修改了一下,基本上可以达到了我的要求,但是还有几个小毛刺!
1。能不能在选好后不需要在选择轮廓线;
2。可不可以将生成的pline变成独立的pline,方便后面的编辑!
请各位dx指教。
详细请看演示图片!

  1. (defun c:ctjc (/ ss box base outline n wid pt dist e)
  2.   (setq tscale (getvar "dimscale"))
  3.   (prompt "\n请选取剖面<退出>:")
  4.   (if (setq ss (ssget '((0 . "solid,*line,ellipse,arc,circle,insert"))))
  5.     (progn
  6.       (xdrx_begin '("cmdecho" 0
  7.                    "highlight" 1
  8.                   )
  9.       )
  10.       (xdrx_ucson)
  11.       (xdrx_drawing_viewsave)
  12.       (setq outline (xdrx_searchoutline ss))
  13.       (foreach n outline
  14.         (apply
  15.           'xdrx_grdraw
  16.           (append
  17.             (list 1 1)
  18.             n
  19.           )
  20.         )
  21.       )
  22.       (xdrx_setmark)
  23.       (setq wid (* tscale 0.45))
  24.       (xdrx_searchoutline ss wid)

  25.       (setq dist (* -2 tscale))
  26.       (prompt "\n请选取要偏移的实体<退出>:")
  27.       (setq ss (ssget '((0 . "*line,arc,circle,ellipse"))))
  28.       (xdrx_setsstodb ss 0)
  29.       (while (setq e (xdrx_getentdata 0))
  30.         (setq pts (xdrx_curve_offset e dist))
  31.         (command "_.offset" (abs dist) e (car pts) "")
  32.       )
  33.       (command "_.erase" "p" "")
  34.       (xdrx_drawing_viewres)
  35.       (xdrx_ucsoff)
  36.       (xdrx_end)
  37.     )
  38.   )
  39.   (princ)
  40. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-8-6 12:37:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
最初由 coolzhb 发布
[B]我将xd的lisp修改了一下,基本上可以达到了我的要求,但是还有几个小毛刺!
1。能不能在选好后不需要在选择轮廓线;
2。可不可以将生成的pline变成独立的pline,方便后面的编辑!
请各位dx指教。
详细请看演示图... [/B]


1、是为了多选的,不选了回车退出,你希望选好后不再提示你选了,可你前面的那些多选怎么实现呢?

2、你的意思是说生成的一条PLINE,你要把每个顶点出断开?那样方便什么编辑?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2003-8-6 13:22:38 | 显示全部楼层
谢谢xd给我的回答!先回复如下:

1、是为了多选的,不选了回车退出,你希望选好后不再提示你选了,可你前面的那些多选怎么实现呢?
---你还是没有明白我说的意思,我的程序在我框选了边界后,用你的边框搜索程序可以生成边框,但下一步我要xoffset,我还得选一下刚才生成的边界线,我的意思能不能让程序自己获得选择集。不要我再选择物体了。

2、你的意思是说生成的一条PLINE,你要把每个顶点出断开?那样方便什么编辑?
---因为我画的是结构图,程序的钢筋需要再trim,extend编辑,我贴一个实际的工程图你比较一下即可看出。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-8-6 13:32:12 | 显示全部楼层
最初由 coolzhb 发布
[B]谢谢xd给我的回答!先回复如下:

1、是为了多选的,不选了回车退出,你希望选好后不再提示你选了,可你前面的那些多选怎么实现呢?
---你还是没有明白我说的意思,我的程序在我框选了边界后,用你的边框搜索?.. [/B]



生产边框线后,你可以用(entlast)得到。然后你OFFSET他就是自动了。

上面的程序边框顶点在pts变量里面,是顶点表,你每两个顶点间画一个PLINE就解决了。

  1. [font=courier]
  2. (apply 'command (cons "pline" pts))
  3. (command "")
  4. [/font]


上面的代码是根据顶点表PTS画一个PLINE。

如果你要每两点间画,用:

  1. [font=courier]
  2. (while (cdr pts)
  3.     (command ".pline" (car pts)(cadr pts) "")
  4.     (setq pts (cdr pts))
  5. )
  6. [/font]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-6 15:02:17 | 显示全部楼层
最初由 XDSoft 发布
[B][QUOTE]最初由 coolzhb 发布
[B]谢谢xd给我的回答!先回复如下:

1、是为了多选的,不选了回车退出,你希望选好后不再提示你选了,可你前面的那些多选怎么实现呢?
---你还是没有明白我说的意思,我?.. [/B]


再次感谢xd大哥,我重新写了程序,但entlast还是没用好,即注释部分代替上一行不行,请问为什么,能帮我改一下吗


  1. (defun c:ctjc (/ ss box base outline n wid pt dist e dist1)
  2.   (setq tscale (getvar "dimscale"))
  3.   (prompt "\n请选取剖面<退出>:")
  4.   (if (setq ss (ssget '((0 . "solid,*line,ellipse,arc,circle,insert"))))
  5.     (progn
  6.       (xdrx_begin '("cmdecho" 0
  7.                    "highlight" 1
  8.                   )
  9.       )
  10.       (xdrx_ucson)
  11.       (xdrx_drawing_viewsave)
  12.       (setq outline (xdrx_searchoutline ss))
  13.       (foreach n outline
  14.         (apply
  15.           'xdrx_grdraw
  16.           (append
  17.             (list 1 1)
  18.             n
  19.           )
  20.         )
  21.       )
  22.       (xdrx_setmark)
  23.       (setq wid (* tscale 0.45))
  24.       (xdrx_searchoutline ss wid)
  25.       (princ)
  26.       (setq dist1 (getreal "\n 输入距离:<1>"))
  27.       (if (= dist1 nil) (setq dist1 -1) (setq dist (* -1 dist1)))
  28.       (setq dist (* dist1 tscale))
  29.       (prompt "\n请选取要偏移的实体<退出>:")
  30.       (setq ss (ssget '((0 . "*line,arc,circle,ellipse"))))
  31.       ;(setq ss (entget (entlast)))
  32.       (xdrx_setsstodb ss 0)
  33.       (while (setq e (xdrx_getentdata 0))
  34.         (setq pts (xdrx_curve_offset e dist))
  35.         (command "_.offset" (abs dist) e (car pts) "")
  36.       )
  37.       (command "_.erase" "p" "")
  38.     )
  39.   )


  40.   (prompt "\n请选取钢筋:")
  41.   (if (setq ss (ssget '((0 . "solid,*line,ellipse,arc,circle,insert"))))
  42.     (progn
  43.       (setq outline (xdrx_searchoutline ss))
  44.       (foreach n outline
  45.         (apply
  46.           'xdrx_grdraw
  47.           (append
  48.             (list 1 1)
  49.             n
  50.           )
  51.         )
  52.       )
  53.       (xdrx_setmark)
  54.       (xdrx_searchoutline ss nil)
  55.       (command "_.erase" "p" "")
  56.       (while (cdr pts)
  57.         (command ".pline" (car pts) "w" (* 0.45 TSCALE) (* 0.45 TSCALE) (cadr pts) "")
  58.         (setq pts (cdr pts))
  59.       )
  60.       (xdrx_drawing_viewres)
  61.       (xdrx_ucsoff)
  62.       (xdrx_end)
  63.     )
  64.   )
  65.   (princ)
  66. )


麻烦大家看看。现在的程序可以运行,但需要多选择2次!帮忙呀!~
附件为我的外框的dwg图形
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-6 15:16:52 | 显示全部楼层
现在的演示效果
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-7 13:34:02 | 显示全部楼层
我现在还有一个请求,能否将两pline线如果夹角大于180,则将pline沿交点延长一个长度,人工输入如200,这是结构上配筋的构造要求,再在每个pline线的内侧居中画3个钢筋剖面点(间距定200),长度小于400的pline线不要,详见附图!
即由上图的效果,通过修改我的程序直接得到下图的效果。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-8-8 00:56:51 | 显示全部楼层
这是干什么的啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-8-8 09:46:44 | 显示全部楼层
最初由 无心伤害 发布
[B]这是干什么的啊? [/B]


结构专业,在模板画好的情况下,自动生成结构配筋图。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-8-8 18:39:35 | 显示全部楼层
最初由 coolzhb 发布
[B]我现在还有一个请求,能否将两pline线如果夹角大于180,则将pline沿交点延长一个长度,人工输入如200,这是结构上配筋的构造要求,再在每个pline线的内侧居中画3个钢筋剖面点(间距定200),长度小于400的pline线不?.. [/B]



请问下PLINE是怎么画的? 一根封闭的,然后找需要的顶点处理吗?

还是一段一段的PL,两个端点的。

这个问题截图发个新主题吧,说下你的想法。关键是实体类型。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-21 08:49 , Processed in 0.368130 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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