明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: highflybir

[【高飞鸟】] LISP编程的一些限制和范围

  [复制链接]
发表于 2014-10-16 09:31:12 | 显示全部楼层
mslide 命令做的sld文件 在dcl image中显示经常偏小.必须在mslide之前把autocad窗口的形状和dcl image调整一样的高宽比例,才能全屏显示sld
回复 支持 1 反对 0

使用道具 举报

发表于 2014-10-16 09:37:22 | 显示全部楼层
不死猫 发表于 2014-10-16 09:29
ssget "c" pt1 pt2 只能获取可见区域内的东西,而且就算在可见区,当视口高度过高,ssget范围太小的时候依然不 ...

保证在可视范围内,ssget "c" pt1 pt2的结果也是不同的。有人说,可能是基于像素的,我也这么认为。
发表于 2014-10-16 09:41:18 | 显示全部楼层
个人感觉lisp最大的限制是不支持对象、属性、继续、多态,做大型应用让人有想死的心;无法设计复杂的数据结构。只支持一种数据结构:表,复杂表数据修改大量使用subst assoc,操作效率低下;

没有命名空间,大型程序容易变量名冲突。变量作用域机制太烂。

反应器机制设计太垃圾,效率稳定性太差,限制多,难以大规模高负荷使用,所以至今没有看到反应器应用得比较好的作品。

没有在LISP中公开geomtry函数库,矢量、矩阵、空间运算很多现成函数只有ARX 或.net才可以用。


当然好处也是巨大的:解释型语言,无需编译;调试、扩展方便;兼容性好,几乎不用考虑CAD版本问题;

点评

LISP的geomtry库我好想在哪里有瞄过,再有看到就发上来。  发表于 2014-10-16 14:22
我从来不玩lisp,一直都是lisp玩我  发表于 2014-10-16 09:47
发表于 2014-10-17 12:11:15 | 显示全部楼层
有谁难证过这句话吗?
在AutoCAD命令行中的表达式里,常量字串最大长度限制在255个字符位。而变量字串的长度仅受内存大小的限制,可以相当长
发表于 2014-10-17 12:36:47 | 显示全部楼层
vectra 发表于 2014-10-16 09:41
个人感觉lisp最大的限制是不支持对象、属性、继续、多态,做大型应用让人有想死的心;无法设计复杂的数据结 ...

你这似乎有点到麦当劳去买肯德基的感觉哦
以个人的理解,Autodesk“主打”Lisp作为用户级的二次开发平台,是有原因的:
一是当时的面向对象语言都还不太成熟,而相对其它语言来说,Lisp的即时调试、扩展是有很大优势的,这种优势能给CAD用户带来很多方便。其二,桌子公司想让这种可以“无界限”扩展的语言给自己的开发带来更多灵感。
一般说来,AutoLisp并不是针对程序员级的,而普通用户对“大型程序”的概念是很局限的,桌子公司本身的CAD辅助程序也基本都是混合编程的,而对一个有经验的程序员或业余编程者而言,变量管理也并不是很难的事情。
至于对象、属性这些面向对象编程的东西,随着版本的提高,也在逐渐引进和完善,但不管怎样,那些也都是面向过程的Lisp的辅助,就像中医院中的西医。
发表于 2014-10-17 13:40:06 | 显示全部楼层
ll_j 发表于 2014-10-17 12:36
你这似乎有点到麦当劳去买肯德基的感觉哦
以个人的理解,Autodesk“主打”Lisp作为用户级的 ...

好像有点偏这贴的题了
但严重赞同

因为lisp草根所以显得高级
程序的目的就是易维护性可扩展性
没有lisp恐怕cad早在上世纪止步了
高手在民间
桌子公司在从200x之后新增的好多功能就是从民间流传的程序收集的


发表于 2014-10-21 16:52:43 | 显示全部楼层
不死猫 发表于 2014-10-16 09:31
mslide 命令做的sld文件 在dcl image中显示经常偏小.必须在mslide之前把autocad窗口的形状和dcl image调整一 ...

大侠能否给个例子?

我是下面这样做的,还是显示偏小

;建幻灯片
(setq dwg (strcat "D:/CUSTOMER/" name ".dwg"))
(vl-cmdf  "zoom" "e" "mslide" (strcat "D:/CUSTOMER/" name ".sld"))

;调用幻灯片

(defun act-image ( );
(setq BlkNam (nth (atoi (get_tile "part_list")) lstx1))
(start_image "style_image")
(fill_image 0 0 (dimx_tile "style_image")(- (dimy_tile "style_image")30) 0);_;-15白色
(slide_image 0 0 (dimx_tile "style_image")(-(dimy_tile "style_image")30) BlkNam)
(end_image)

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

本版积分规则

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

GMT+8, 2024-11-22 16:49 , Processed in 0.176123 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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