找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1854|回复: 8

[原创]:参数设计自动化开发的实现

[复制链接]
发表于 2009-7-7 09:18:57 | 显示全部楼层 |阅读模式

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

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

×
实现功能:
程序自动分析图形,
然后自动生成参数化设计的Lisp源代码
我只需告诉程序我需要输入哪几个参数
哪几个图元的生成方式需要调整,
则程序会自动调整lisp源代码
内部的变量分配和释放由程序自动控制完成.
当然,用Command 还是 vlisp 方法 都可以随心所欲.
下面是程序自动生成部分LIsp源代码(初级代码演示):

;--------------------------------------------
;此Lisp程序及注释由nonsmall开发工具全自动生成
(Defun C:Test( /
;释放系统变量的临时记录变量
;释放所有的点变量
;释放所有的角度变量
;释放所有的长度变量
;释放所有的图元变量
)
;----系统变量备份----
(Setvar "cmdecho" 0);_关闭命令提示
(Setq osmode_bak (getvar "osmode"));_记录捕捉
(Setvar "osmode" 0);_关闭捕捉
(Setq clayer_bak (getvar "clayer"));_记录当前图层
(Setq cecolor_bak (getvar "cecolor"));_记录当前颜色
(Setq celtype_bak (getvar "celtype"));_记录当前线型
(Setq textstyle_bak (getvar "textstyle"));_记录当前文字样式

;----绘制部分开始----
    (Setq pt0 '(0 0));固定pt0点
    (Setq angle0 0.0);设置角度angle0
    (Setq dist0 (GetDist "\n请选择底座宽"));用户输入长度赋给变量dist0
    (Setq pt1 (Polar pt0 angle0 dist0));在变量pt0点上进行偏移后赋给pt1
    (Command ".Line" pt0 pt1 "");绘制一条线,起点为pt0终点为pt1

    (Setq pt2 pt0);将变量pt0的值赋给pt2
    (Setq angle1 (* pi 0.5));设置角度angle1
    (Setq dist1 (GetDist "\n请选择底座高度"));用户输入长度赋给变量dist1
    (Setq pt3 (Polar pt0 angle1 dist1));在变量pt0点上进行偏移后赋给pt3
    (Command ".Line" pt2 pt3 "");绘制一条线,起点为pt2终点为pt3

..............

    (Setq pt11 pt10);将变量pt10的值赋给pt11
    (Setq dist18 (GetDist "\n底座螺孔内径"));用户输入长度赋给变量dist18
    (Command ".Circle" pt11 dist18);绘制一个圆,圆心点为pt11半径为dist18

    (Setq name2 (Entlast));获得最后生成的一个图元名

    (Setq name3 name2);把图元变量name2的值赋给name3
    (Setq angle22 0.0472544);设置角度angle22
    (Setq dist24 (* dist1 0.5));把长度变量dist1的0.5倍值赋给dist24
    (Setq pt17 (Polar pt11 angle22 dist24));在变量pt11点上进行偏移后赋给pt17
    (Command ".dimdiameter" (list name3 pt17) pt17);绘制一条直径标注,标注图元为name3标注终点为pt17

..............

    (Setq pt59 pt12);将变量pt12的值赋给pt59
    (Setq pt60 pt40);将变量pt40的值赋给pt60
    (Setq angle66 pi);设置角度angle66
    (Setq dist72 (* dist0 0.1));把长度变量dist0的0.1倍值赋给dist72
    (Setq pt61 (Polar pt40 angle66 dist72));在变量pt40点上进行偏移后赋给pt61
    (Command ".dimlinear" pt59 pt60 nil pt61);绘制一条线型标注,标注起点为pt59标注终点为pt60拉伸点为pt61

;----绘制部分结束----

;----系统变量还原----
(Setvar "osmode" osmode_bak);_还原捕捉
(Setvar "clayer" clayer_bak);_还原图层
(Setvar "cecolor" cecolor_bak);_还原颜色
(Setvar "celtype" celtype_bak);_还原线型
(Setvar "textstyle" textstyle_bak);_还原文字样式
(Setvar "cmdecho" 1);_打开命令提示
(Princ);_关闭程序返回值
);_程序结束
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2009-7-8 22:39:32 | 显示全部楼层
高手路过
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-7-14 07:37:33 | 显示全部楼层
看得不是太明白,如何让程序自动分析图形,呢?思路是什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 1304个

财富等级: 财源广进

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 828个

财富等级: 财运亨通

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-6 03:46 , Processed in 0.272022 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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