找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 5302|回复: 11

[求助] [求助]:圆变多边形

[复制链接]
发表于 2003-11-30 09:27:59 | 显示全部楼层 |阅读模式

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

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

×
那位有圆变多边形的lsp程序?谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-11-30 13:15:50 | 显示全部楼层
不明白你的意思, 内接? 外切? 多少边?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-11-30 16:35:54 | 显示全部楼层
我写了一个.

  1. (defun c:cp (/ en n)
  2.   (setvar "cmdecho" 0)
  3.   (setq en (entsel "请选择一个圆"))
  4.   (setq en_data (entget (car en)))
  5.   (setq cen (cdr (assoc 10 en_data)))
  6.   (setq r (cdr (assoc 40 en_data)))
  7.   (setq n (getint "\n请输入正多边形的边数:"))
  8.   (initget "I C")
  9.   (setq        a (getkword "\n 请输入正多边形选项[内接于圆(I)/外切于圆(C)]<C>:"))
  10.   (if (= a "I")
  11.     (progn
  12.       (command "polygon" n cen "i" r)
  13.     )
  14.     (progn
  15.       (command "polygon" n cen "c" r)
  16.     )
  17.   )
  18.   (command "ERASE" en "")
  19.   (princ)
  20. )

论坛的代码显示有点问题,请下载LSP文件查看代码.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2003-12-1 03:57:45 | 显示全部楼层
我也贴一个:)

  1. ;|圆变多边形的lsp程序---for xdcad坛
  2. v1.0---------------陌生人.2003.12
  3. |;
  4. (defun c:c2pg ( / ss n k i en cen rad ekey)
  5.   (princ "\n圆变多边形的程序-----------------------------陌生人@xdcad .2003.12")
  6.   (vl-load-com)
  7.   (vl-cmdf ".undo" "be")
  8.   (princ "\n请选择圆(可多个):")
  9.   (setq ss    (ssget '((0 . "circle")))
  10.         nside (getvar "POLYSIDES")
  11.         n     (getint (strcat "\n多边形边数(必须>2)<" (itoa nside) ">:") )
  12.         i     0)
  13.   (if (= nil n)(setq n nside))
  14.   (if (> n 2)
  15.   (progn
  16.    (initget "  I C" )
  17.    (setq k (getkword "\n请输入正多边形选项----内接于圆(I)/外切于圆(C) < I >:"))
  18.    (if (= nil k)(setq k "I"))
  19.   ;;
  20.    (repeat (sslength ss)
  21.      (setq en   (ssname ss i)
  22.              en (vlax-ename->vla-object en)
  23.            cen  (vlax-safearray->list (vlax-variant-value  (vla-get-center en)))
  24.            rad  (vla-get-Radius en)
  25.            i    (+ 1 i)
  26.      )
  27.      (vl-cmdf  "_.polygon" n cen k rad)
  28.    )
  29.    ;;
  30.    (initget "  Y N")
  31.    (setq ekey (getkword "\n删除圆? Yes/No <Y>:"))
  32.    (if (/= "N" ekey)
  33.       (vl-cmdf ".erase" ss "")
  34.    )(setvar "POLYSIDES" n)
  35.   )(princ "\n多边形边数必须>2 !!!"))                        ;end progn; end if
  36.   (vl-cmdf ".undo" "e")
  37.   (princ)
  38. )

对vl还用的不是很熟,不好意思
上例 ...cen  (vlax-safearray->list (vlax-variant-value  (vla-get-center en))) 一句还有更简便的写法么?
该死的 get center 居然返回变体数值,调试的时候困扰了一阵子 :(
另外,程序没有写出错处理,基于这样的考虑:
程序中只有在最后一处有一个setvar 改变系统变量,不存在中途退去更改系统变量的问题.
请多多指教,谢谢.

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

使用道具 举报

发表于 2003-12-3 07:58:31 | 显示全部楼层
(setq EN  (ssname SS I)
              EN  (vlax-ename->vla-object EN)
              CEN (vlax-get EN 'CENTER);以後可能不支持,故還是少用;LUCAS
                  ;|
              CEN (vlax-safearray->list
                    (vlax-variant-value (vla-get-center EN))
                  )|;
              RAD (vla-get-radius EN)
              I          (+ 1 I)
        )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2004-12-1 17:46:38 | 显示全部楼层
更简单啊.求圆心和半径就行了..................更懒的方法:先连成复合线再拟合曲线.!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-1 18:13:17 | 显示全部楼层
圆、椭圆、正方形等封闭图形变多边形:
http://www.xdcad.net/forum/showthread.php?s=&threadid=301953
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-29 13:36 , Processed in 0.220601 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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