明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1049|回复: 6

[基础] 以txt文本文件作为参数化建模的公式,用lisp编写?

[复制链接]
发表于 2024-5-6 19:37:24 | 显示全部楼层 |阅读模式
用于家具建模的插件
动画演示



[url=]中侧板.txt[/url]
[url=]对话框:对应txt里面的参数设置。[/url]



请教lisp怎写类似文档中的规则。


程序反缀: .dll
以下是txt文档中的内容:
图形设置开始
插入图形,##,动态插入_三维捕捉点_自定义,更多设置{设置开始行=插入图形设置开始;设置结束行=插入图形设置结束}
图形设置结束

插入图形设置开始
保留图形=不保留
提示文字=请选择驱动空间
开启动态输入=是
保留建模中图形=是
显示参数窗体=是,更多设置{说明开始行=帮助说明开始;说明结束行=帮助说明结束}
捕捉属性块=是
插入图形设置结束

帮助说明开始
1.按Q键快速翻转
2.高度可以直接输入
3.直接输入数值小于10定义为等分
帮助说明结束

动态插入图形_前_设置开始
//设置默认数值
if,1=1,[翻转]=否
if,1=1,[等分]=1
if,1=1,[板高度]=自动
动态插入图形_前_设置结束


动态插入图形_中_设置开始
//if,1=1,运行内部代码,手动选择_画图开始,手动选择_画图结束
if,1=1,运行内部代码,参数赋值_开始,参数赋值_结束
if,1=1,运行内部代码,完全没捕捉时_画图开始,完全没捕捉时_画图结束
if,1=1,运行内部代码,等分小于或等于1画图开始,等分小于或等于1画图结束
if,1=1,运行内部代码,等分大于2画图开始,等分大于2画图结束
插入属性块,0,0,0,即时分解
if,[手动选择]=是,运行操作,结束 //用户手动选择了,不需要继续捕捉,结束代码
动态插入图形_中_设置结束



动态插入图形_后_设置开始
继承建模中对象,
//浏览数据,标记ID
//浏览数据,参数
if,[保留标注]=否,删除,更多设置{方法ID=B1}
动态插入图形_后_设置结束


隐藏参数设置开始
参数※[key]※?
参数※[a]※0
参数※[c]※0
参数※[d]※0
参数※[cs]※0
参数※[ff]※-0.011
参数※[10以下等分]※是{是;否}
参数※[横板距离]※0
参数※[快捷键1]※
参数※[等分]※1{1;2;3;4;5;6;7;8;9}
隐藏参数设置结束


显示参数设置开始
参数※[名称]※中侧板
参数※[板厚]※16
参数※[板高度]※自动{自动;0}
参数※[前内缩]※0
参数※[后内缩]※0
参数※[保留标注]※否{是;否}
显示参数设置结束




参数赋值_开始
if,1=1,[c]=[板厚]
if,sr_key=[快捷键1],动态输入,hc参数菜单,
//用户输入0以上10以下的数字,可以直接等分
if,sr_key<=1,sr_key=2
if,sr_key>=1 and sr_key<10 and [10以下等分]=是,[等分]=sr_key
//手动选择
if,1=1,[是否输入左边距离]=是
if,sr_key=空格,运行外部代码,#\程序系统面板\代码面板\代码模板\手动选择代码.txt,手动选择_左右上下后_设置开始,手动选择_左右上下后_设置结束
if,[手动选择]=是,参数赋值,列表{x1=[sdxz_zb_x2];x2=[sdxz_yb_x1];y1=[sdxz_y_max];y2=[sdxz_y_min];z1=[sdxz_xb_z2];z2=[sdxz_sb_z1]}

if,[板高度]=自动, sb_z=z2-z1
if,[板高度]>0, sb_z=[板高度]

参数赋值_结束




完全没捕捉时_画图开始
if,x1<>[ff] or x2<>[ff] or y1<>[ff] or y2<>[ff],[cs]=0
if,x1<>[ff] or x2<>[ff] or y1<>[ff] or y2<>[ff],运行操作,结束
if,1=1,[cs]=[cs]+1
if,[cs]<10,运行操作,结束 //为了效果,连续10次没有捕捉到对象才执行,一旦捕获了[cs]=0
BOX,sb_x,sb_y,sb_z,[板厚],600,2000,中侧板,更多设置{标记ID=A1}
完全没捕捉时_画图结束


等分小于或等于1画图开始
if,x1=[ff] and  x2=[ff] and  y1=[ff] and y2=[ff],运行操作,结束
if,[等分]>1 and [等分]<=10 and [10以下等分]=是,运行操作,结束
if,[手动选择]=是,sr_key=[sdxz_离左边距离]


if,sr_key=Q and [翻转]=是,参数赋值,列表{[翻转]=否;sr_key=?}
if,sr_key=Q and [翻转]=否,参数赋值,列表{[翻转]=是;sr_key=?}

if,[翻转]=否 and sr_key>0,sb_x=x1+sr_key
if,[翻转]=是 and sr_key>0,sb_x=x2-sr_key-[板厚]

BOX,sb_x,y1+[前内缩],z1,[板厚],y2-y1-[前内缩]-[后内缩],sb_z,中侧板,更多设置{标记ID=A1}
//if,[翻转]=否 and [板高度]=自动,BOX,sb_x,y1+[前内缩],z1,[板厚],y2-y1-[前内缩],z2-z1,中侧板,更多设置{标记ID=A1}
//if,[翻转]=否 and [板高度]>0,BOX,sb_x,y1+[前内缩],z1,[板厚],y2-y1-[前内缩],[板高度],中侧板,更多设置{标记ID=A1}
//if,[翻转]=是 and [板高度]=自动,BOX,sb_x,y1+[前内缩],z1,[板厚],y2-y1-[前内缩],z2-z1,中侧板,更多设置{标记ID=A1}
//if,[翻转]=是 and [板高度]>0,BOX,sb_x,y1+[前内缩],z1,[板厚],y2-y1-[前内缩],[板高度],中侧板,更多设置{标记ID=A1}
if,[翻转]=否 and sb_x<>x1,添加转角标注,X轴,x1,y1+(y2-y1)/2,z1+(z2-z1)/2,sb_x-x1,0,-90,更多设置{标记ID=B1}
if,[翻转]=否 and sb_x=x1,添加转角标注,X轴,x1,y1+(y2-y1)/2,z1+(z2-z1)/2,-(sb_x-x2),0,-90,更多设置{标记ID=B1}
if,[翻转]=是,添加转角标注,X轴,sb_x+[板厚],y1+(y2-y1)/2,z1+(z2-z1)/2,x2-sb_x-[板厚],0,-90,更多设置{标记ID=B1}
//横板
if,[翻转]=否 and [横板距离]>0,BOX,x1,y1+[横板距离],z1,sb_x-x1,[板厚],z2-z1,厚背板
if,[翻转]=是 and [横板距离]>0,BOX,sb_x+[板厚],y1+[横板距离],z1,x2-sb_x-[板厚],[板厚],z2-z1,厚背板
if,[翻转]=否 and [横板距离]>0,添加转角标注,Y轴,x1+(sb_x-x1)/2,y1,z2,[横板距离],0,90,更多设置{标记ID=B1}
if,[翻转]=是 and [横板距离]>0,添加转角标注,Y轴,x2-(x2-sb_x-[板厚])/2,y1,z2,[横板距离],0,90,更多设置{标记ID=B1}
等分小于或等于1画图结束


等分大于2画图开始
if,x1=[ff] and  x2=[ff] and  y1=[ff] and y2=[ff],运行操作,结束
if,[等分]=1 or [等分]>10,运行操作,结束
if,1=1,[df1]=[等分]-1
if,1=1,[df2]=[等分]
BOX,x1+(x2-x1-[c]*[df1])/[df2],y1+[前内缩],z1,[板厚],y2-y1-[前内缩]-[后内缩],sb_z,中侧板,更多设置{标记ID=A1}
//if,[板高度]=自动,BOX,x1+(x2-x1-[c]*[df1])/[df2],y1+[前内缩],z1,[板厚],y2-y1-[前内缩],z2-z1,中侧板,更多设置{标记ID=A1}
//if,[板高度]>0,BOX,x1+(x2-x1-[c]*[df1])/[df2],y1+[前内缩],z1,[板厚],y2-y1-[前内缩],[板高度],中侧板,更多设置{标记ID=A1}
if,[等分]>=3,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*1+[c]*1,0,0,更多设置{标记ID=A1}
if,[等分]>=4,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*2+[c]*2,0,0,更多设置{标记ID=A1}
if,[等分]>=5,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*3+[c]*3,0,0,更多设置{标记ID=A1}
if,[等分]>=6,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*4+[c]*4,0,0,更多设置{标记ID=A1}
if,[等分]>=7,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*5+[c]*5,0,0,更多设置{标记ID=A1}
if,[等分]>=8,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*6+[c]*6,0,0,更多设置{标记ID=A1}
if,[等分]>=9,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*7+[c]*7,0,0,更多设置{标记ID=A1}
//标注
添加转角标注,X轴,x1,y1+(y2-y1)/2,z1+(z2-z1)/2,(x2-x1-[c]*[df1])/[df2],0,-90,更多设置{标记ID=B1}
if,[等分]>=2,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*1+[c]*1,0,0,更多设置{标记ID=B1}
if,[等分]>=3,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*2+[c]*2,0,0,更多设置{标记ID=B1}
if,[等分]>=4,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*3+[c]*3,0,0,更多设置{标记ID=B1}
if,[等分]>=5,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*4+[c]*4,0,0,更多设置{标记ID=B1}
if,[等分]>=6,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*5+[c]*5,0,0,更多设置{标记ID=B1}
if,[等分]>=7,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*6+[c]*6,0,0,更多设置{标记ID=B1}
if,[等分]>=8,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*7+[c]*7,0,0,更多设置{标记ID=B1}
if,[等分]>=9,复制,0,0,0,(x2-x1-[c]*[df1])/[df2]*8+[c]*8,0,0,更多设置{标记ID=B1}
//浏览数据,标记ID,全部,命令栏
等分大于2画图结束



参数事件_设置开始
if,1=1,起始事件,修改参数,修改列表{[等分]=1;} //默认为1
if,[等分]=2,修改事件,修改参数,修改列表{[等分比例]=1:1;}
if,[等分]=3,修改事件,修改参数,修改列表{[等分比例]=1:1:1;}
参数事件_设置结束


本帖子中包含更多资源

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

x
 楼主| 发表于 2024-5-6 19:38:55 | 显示全部楼层
q键切换靠左还是靠右
发表于 2024-5-7 01:17:49 | 显示全部楼层
牛牛牛!太棒了,有没有程序呢?
发表于 2024-5-7 09:29:01 | 显示全部楼层
顶,这是用CAD画3D的图,论坛里看到的三维插件还真不多
发表于 2024-5-7 10:14:18 | 显示全部楼层
楼主,分享出来大家才可以想到更好的办法去改进。
 楼主| 发表于 2024-5-7 13:05:17 来自手机 | 显示全部楼层
mokson 发表于 2024-5-7 10:14
楼主,分享出来大家才可以想到更好的办法去改进。

我也想知道怎么做的
 楼主| 发表于 2024-5-7 13:06:50 来自手机 | 显示全部楼层
cchessbd 发表于 2024-5-7 01:17
牛牛牛!太棒了,有没有程序呢?

没有,有加密狗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 18:40 , Processed in 0.163870 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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