跪求lisp cass 大神
qq_1493094388222
2017年04月25日 12:31:23
来自于工程测量
只看楼主

网上转悠。无意间看到了一篇文章,叫做《土石方工程基于三维模型审计编程的实现和应用》。是一个叫【党礼新(广西壮族自治区钦州市审计局),百度搜这个文章第一个应该就是】里面介绍大概意思是说:三角网模型缺乏直观,在没法绘制清晰的等高线情况下将难以对该模型进行观察分析。如果能将三角网模型建立三维模型,提高可视化效果,将会对审计工作提供很大的帮助。然后他给出来一段话!!!在南方cass软件中,软件为用户提供了三角网数据输出接口(.sjw文件),我们可以根据三角网文件数据建立三维模型。由于数据量大,采取手工操作方式是不现实的,由于该软件是建立在Autocad软件平台上的,因此我们可以利用autocad强大的二次开发功能,编写程序实现三角网三维模型绘制。在此编者利用autocad自带编程语言Autolisp编写了程序。程序代码如下:  (defun f3d( / ffn ff data i A P PP) ;;定义函数  (command \"layer\" \"m\" \"三维图\" \"c\" 3 \"\" \"l\" \"center\" \"\" \"lw\" 1 \"\" \"\") ;;调用cad图层命令(setvar \"cmdecho\" 0) ;;设置系统变量  (setvar \"osmode\" 0) ;;设置系统变量  (setq ffn (getfiled \"选择南方cass三角网文件\" \"\" \"sjw\" 2)) ;;读取三角网文件  (setq ff (open ffn \"r\"))   (setq data (read-line ff))  (setq i 1)  (setq A \'())  (while (/= \"nil\" data )   (setq p \"\" pp \"\" j 1)    (setq nn (strlen data))   (repeat nn   (setq p (substr data j 1))   (if (/= p \"  \")   (setq pp (strcat pp p))   (setq A (cons pp A) pp \"\")   )   (setq j (1 j))   )   (setq A (cons pp A))   (if (= (rem i 9) 0 ) (draw_pt)) ;;调用子函数  (if (= (rem i 9) 0 ) (setq A \'()))   (setq data (read-line ff))  (setq i (1 i))  )  (close ff)  (command \"shademode\" \"f\" ) ;;设置三维显示模式  (command \"zoom\" \"a\" )  (command \"-view\" \"_swiso\" )  )   (defun draw_pt() ;;三维绘制子函数  (setq A (reverse A))  (setq X1 (distof (nth 0 A) 2))  (setq Y1 (distof (nth 1 A) 2))  (setq Z1 (distof (nth 2 A) 2))  (setq AC (list X1 Y1 Z1))  (setq X2 (distof (nth 3 A) 2))  (setq Y2 (distof (nth 4 A) 2))  (setq Z2 (distof (nth 5 A) 2))  (setq BC (list X2 Y2 Z2))  (setq X3 (distof (nth 6 A) 2))  (setq Y3 (distof (nth 7 A) 2))  (setq Z3 (distof (nth 8 A) 2))  (setq CC (list X3 Y3 Z3))  (command \"_3dface\" AC BC CC \"\" \"\" )  (setq A \'())  )  代码采用文本编写并保存为.LSP文件格式,同时为方便于操作增加菜单文件,菜单文件采用文本编写并保存为.mnu格式,菜单文件代码如下。  ***MENUGROUP=MYLISP   ***POP1  [土石方程序]  [生成三维模型]^c^c^p(load \"f3d\")(f3d)  将编写的文件复制到autocad软件安装目录下的support文件夹中,打开autocad软件或者南方cass软件,运行menuload命令加载菜单文件,形成autocad的局部菜单命令(d图)。程序执行过程弹出的数据交互对话框(e图),选择南方cass软件输出的三角网数据文件,得到的斗坎三维模型图(c图),该图形是完全依据三角网数据绘制的模型,因此可以完整反映三角网的模型状态。通过观察直观的三维模型对比真实地形可以发现:1.软件在构建三角网过程中,由于缺乏边界的约束,存在冗余的三角网(斗坎顶部三角网自由连接);2.由于斗坎中间高度缺乏测绘数据,仅有斗坎顶部与底部数据参与构建三角网,所以造成斗坎模型计算坡度与实际不符,这将会增加土方工程计算量,因此有必要对数进行修正。我按文章的步骤一步步操作,成功的添加了cass中的选项按钮。可是问题出现了,菜单栏确实有按钮,可是点击后没有任何执行命令,出不来让 插入三角网文件的窗口。跪求大神解答

网上转悠。无意间看到了一篇文章,叫做《土石方工程基于三维模型审计编程的实现和应用》。是一个叫【党礼新(广西壮族自治区钦州市审计局),百度搜这个文章第一个应该就是】里面介绍大概意思是说:三角网模型缺乏直观,在没法绘制清晰的等高线情况下将难以对该模型进行观察分析。如果能将三角网模型建立三维模型,提高可视化效果,将会对审计工作提供很大的帮助。然后他给出来一段话!!!在南方cass软件中,软件为用户提供了三角网数据输出接口(.sjw文件),我们可以根据三角网文件数据建立三维模型。由于数据量大,采取手工操作方式是不现实的,由于该软件是建立在Autocad软件平台上的,因此我们可以利用autocad强大的二次开发功能,编写程序实现三角网三维模型绘制。在此编者利用autocad自带编程语言Autolisp编写了程序。程序代码如下:  (defun f3d( / ffn ff data i A P PP) ;;定义函数  (command \"layer\" \"m\" \"三维图\" \"c\" 3 \"\" \"l\" \"center\" \"\" \"lw\" 1 \"\" \"\") ;;调用cad图层命令(setvar \"cmdecho\" 0) ;;设置系统变量  (setvar \"osmode\" 0) ;;设置系统变量  (setq ffn (getfiled \"选择南方cass三角网文件\" \"\" \"sjw\" 2)) ;;读取三角网文件  (setq ff (open ffn \"r\"))   (setq data (read-line ff))  (setq i 1)  (setq A \'())  (while (/= \"nil\" data )   (setq p \"\" pp \"\" j 1)    (setq nn (strlen data))   (repeat nn   (setq p (substr data j 1))   (if (/= p \"  \")   (setq pp (strcat pp p))   (setq A (cons pp A) pp \"\")   )   (setq j (1 j))   )   (setq A (cons pp A))   (if (= (rem i 9) 0 ) (draw_pt)) ;;调用子函数  (if (= (rem i 9) 0 ) (setq A \'()))   (setq data (read-line ff))  (setq i (1 i))  )  (close ff)  (command \"shademode\" \"f\" ) ;;设置三维显示模式  (command \"zoom\" \"a\" )  (command \"-view\" \"_swiso\" )  )   (defun draw_pt() ;;三维绘制子函数  (setq A (reverse A))  (setq X1 (distof (nth 0 A) 2))  (setq Y1 (distof (nth 1 A) 2))  (setq Z1 (distof (nth 2 A) 2))  (setq AC (list X1 Y1 Z1))  (setq X2 (distof (nth 3 A) 2))  (setq Y2 (distof (nth 4 A) 2))  (setq Z2 (distof (nth 5 A) 2))  (setq BC (list X2 Y2 Z2))  (setq X3 (distof (nth 6 A) 2))  (setq Y3 (distof (nth 7 A) 2))  (setq Z3 (distof (nth 8 A) 2))  (setq CC (list X3 Y3 Z3))  (command \"_3dface\" AC BC CC \"\" \"\" )  (setq A \'())  )  代码采用文本编写并保存为.LSP文件格式,同时为方便于操作增加菜单文件,菜单文件采用文本编写并保存为.mnu格式,菜单文件代码如下。  ***MENUGROUP=MYLISP   ***POP1  [土石方程序]  [生成三维模型]^c^c^p(load \"f3d\")(f3d)  将编写的文件复制到autocad软件安装目录下的support文件夹中,打开autocad软件或者南方cass软件,运行menuload命令加载菜单文件,形成autocad的局部菜单命令(d图)。程序执行过程弹出的数据交互对话框(e图),选择南方cass软件输出的三角网数据文件,得到的斗坎三维模型图(c图),该图形是完全依据三角网数据绘制的模型,因此可以完整反映三角网的模型状态。通过观察直观的三维模型对比真实地形可以发现:1.软件在构建三角网过程中,由于缺乏边界的约束,存在冗余的三角网(斗坎顶部三角网自由连接);2.由于斗坎中间高度缺乏测绘数据,仅有斗坎顶部与底部数据参与构建三角网,所以造成斗坎模型计算坡度与实际不符,这将会增加土方工程计算量,因此有必要对数进行修正。我按文章的步骤一步步操作,成功的添加了cass中的选项按钮。可是问题出现了,菜单栏确实有按钮,可是点击后没有任何执行命令,出不来让 插入三角网文件的窗口。跪求大神解答
免费打赏
qq_1493568095839
2017年05月03日 23:30:34
2楼
这lisp是没有问题的,菜单栏可不可以调用也关系不大
你可以将lisp程序加载,使用快捷键来操作------------cass环境下键入appload,加载这个**.lisp成功后,输入快捷键tf3d就可以达到相同的效果
邪王这个方法可以帮到你
回复
xpyjc
2017年05月09日 11:42:04
3楼
1、程序先加载,调用命令,程序能否执行,不能执行则检查程序,改,知道加载后通过命令能执行为止。
2、程序没问题后,菜单栏确实有按钮,可是点击后没有任何执行命令,则是你的菜单文件代码有误,尽管你的代码与人家的一样。
3、要有反应,复制代码后,看光标,在最后的文字后,给一个回车,然后保存为菜单文件,重新加载菜单文件。点击菜单里的按钮即可。
4、最最重要的是你的菜单缺最后的回车!!!
回复
逍遥沨
2019年08月28日 22:23:22
4楼

这个问题要解决,得上次附件供程序员测试。

回复

相关推荐

APP内打开