乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 20|回复: 0

[编程交流] 帮助更改lisp提取

[复制链接]

7

主题

18

帖子

12

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 18:28:55 | 显示全部楼层 |阅读模式
大家好,我发现这个论坛的一个lisp老代码,这是非常有用的。。。从选定多段线坐标x、y、z上的特定距离提取lisp,并将其存储在中。txt文件。。。。如果有人能帮我修改lisp代码,请告诉我:我希望距离不是固定的,可以从列或特定文件中导入距离。txt。csv。xls等。。。提前感谢!
 
代码:
[code](defun c:xdiv(/*error*cCurve curPt dPar dPt enPt fPar fPt maxLen obType oldDis oldOsn posDir rClose sFlag stPt sumDis swMod undoLst vClose whatDo)(vl load com)(defun asmi\u GetActiveSpace(/actDoc)(if(=1(vla get ActiveSpace(setq actDoc)(vla get ActiveDocument(vlax get acad object));end vla get ActiveSpace);结束setq);结束vla get ActiveDocument);end=(vla get ModelSpace actDoc)(vla get PaperSpace actDoc));如果结束);asmi\u GetActiveSpace(defun RestorePointStyle()(if(and xdiv:oldPm xdiv:oldPs)(progn(initget“Yes No”)(setq swMod(getkword“\nRestore point style?[Yes/No]:”)(if(null swMod)(setq swMod“No”)(if(=swMod“Yes”)(progn(princ”\n请稍候…)(setvar“PDMODE”xdiv:oldPm)(setvar“PDSIZE”xdiv:oldPs));结束程序);如果结束);结束程序);结束if(princ));恢复点样式结束(defun AddPointOrInsert(模式块比例)(vla AddPoint(asmi\u GetActiveSpace)(vlax-3d-point curPt));AddPointOrInsert(defun AddPointOrInsert(Mode Block Scale/outObj)(setq undoLst(append)(list(setq outObj(vla AddPoint(asmi\u GetActiveSpace)(vlax-3d-point curPt)))的结束;end setq curPt xdiv:curDis);结束列表);结束列表撤消);结束追加);结束setq outObj);AddPointOrInsert结束(defun*error*(msg)(如果cCurve(progn(vla Highlight cCurve:vlax false)(setvar“OSMODE”oldOsn));结束程序);结束if(princ“\n*Cancel*”)(princ));结束*错误*(if(成员(setq xdiv:oldPm(getvar“PDMODE”))'(0 1));结束成员(progn(setq xdiv:oldPs(getvar“PDSIZE”))(initget“Yes No”)(setq swMod(getkword“\n将点样式更改为良好可见?[是/否]:”)(if(null swMod)(setq swMod“Yes”)(if(=swMod“Yes”)(progn(princ“\n请稍候…)(setvar“PDMODE”35)(setvar“PDSIZE”-2));结束程序);如果结束);结束程序);结束if(setq oldOsn(getvar“OSMODE”);结束setq(if(非xdiv:curDis)(setq xdiv:curDis 1.0 xdiv:oldDis 1.0);结束setq);结束if(if(setq cCurve(entsel“\n选择曲线>”);结束setq(progn(setq cCurve(vlax ename->vla object(car cCurve));结束setq(if(member(setq obType(vla get ObjectName cCurve))“(AcDbLine”“AcDbPolyline”“AcDb3dPolyline”“acdbpline”“AcDbArc”“AcDbCircle”“acdbeliple”);结束成员(progn(vla Highlight cCurve:vlax true)(setvar“OSMODE”3071)(setq stPt(vlax curve GetStartPoint cCurve)enPt(vlax curve GetEndPoint cCurve)fPt(getpoint“\n单击曲线>处的起始标记点”);结束setq(如果fPt(setq fPt(trans fPt 1 0)curPt(vla AddPoint(asmi\u GetActiveSpace)(vlax-3d-point fPt));end vla AddPoint undoLst(列表(列表curPt 0.0 0.0));结束列表);结束setq);结束if(if(和fPt(setq fPar(vlax curve GetParamAtPoint cCurve fPt)));结束和(progn(if(and(not(等于fPt stPt 0.0001))(not(等于fPt enPt 0.0001)));结束或(progn(setq dPt(getpoint fPt“\n点击曲线点以指定标记方向>”)(如果dPt(setq dPt(trans dPt 1 0)));结束if(if(和dPt(setq dPar(vlax curve GetParamAtPoint cCurve dPt)));结束和(progn);结束程序(princ“\nEmpty input or point not at curve!”)            ); 如果结束);结束程序);如果结束);end progn(princ“\nEmpty input or point not at curve!”);如果结束);end progn(princ“\nInvalid object type!”);结束if(setq maxLen(-(vlax curve GetDistAtPoint cCurve enPt)(vlax curve GetDistAtPoint cCurve stPt));end-rClose(vlax曲线为闭合曲线);结束setq(if(等于fPt stPt 0.0001)(setq vClose T));结束if(if(或(等于fPt stPt 0.0001)(和dPar(>dPar fPar));结束和);end or(setq posDir T sumDis(vlax curve GetDistAtPoint cCurve fPt));end setq(setq sumDis(-maxLen(-maxLen(vlax curve GetDistAtPoint cCurve fPt)));结束setq);结束if(while(not sFlag)(setq whatDo(getstring(strcat“\n指定距离或[撤消/退出]:”);结束strcat);结束getstring);end setq(cond((or(='REAL(type(distof whatDo))))(=“”whatDo));结束或(如果(=“”whatDo)(setq-xdiv:curDis-xdiv:oldDis)(setq-xdiv:curDis(distof-whatDo)));结束if(setq xdiv:oldDis xdiv:curDis);end setq(cond(posDir(setq sumDis(+sumDis xdiv:curDis)curPt(vlax curve GetPointAtDist cCurve sumDis));end setq(如果curPt(AddPointOrInsert nil nil nil)(princ“\n>>>行结束>行结束>无需撤消
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-12 19:47 , Processed in 0.836748 second(s), 54 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表