iCAx开思网

标题: surfacer的二次开发 [打印本页]

作者: linying    时间: 2003-5-8 09:05
标题: surfacer的二次开发
  
Surfacer是一种优秀的逆向三维软件不仅具有强大的点数据处理,曲面造型等功能,而且提供了二次开发语言模块scoll及良好的高级语言(C语言)接口,使surfacer的图形功能和计算功能有机的结合起来便于用户开发专用的功能及系统。  
一.Surfacer的Scoll程序  
Scoll是surfacer提供的内嵌式命令行语言,能实现强大的点云处理,曲线,曲面的生成,处理,检验等和一定的文件管理功能,通过scoll主要进行surfacer的功能调用,以及一些简单的底层数据的操作。Scoll极易于使用,用户可以在命令行直接输入语句,还可以利用更高级的scoll技巧写复杂的,重复的scoll script,在命令行里调用程序。  
Scoll程序有三种类型的函数:  
1.  Scoll-Only 函数,只能在scoll中使用,可以实现一些界面中无法直接进行的操作。  
2.  菜单scoll函数,基本上软件界面中提供的功能都有相应的scoll函数。  
3.  用户自定义的函数。  
Scoll程序一般可以在文字编辑器,word,以及最简单的写字板中编写,(不建议在word中编写容易在保存后出错),文字编辑器中可以看到行数,利与检验修改,但一定要保存为.cmd的格式,这是scoll认可的script格式。具体过程如下:  
            1)  打开写字板编写自己的程序格式为:  
                  function usermain (parameter){  
  
                                       functionbody  
  
                   }  
                  #usermain()  
                  这里的#是注释行的意思,在调程序时我的经验是在最后一 行加入 usermain(),可以在命令行调用时直接执行程序。  
              2)打开system / open conmand line,出来conmand line 界面,在file里load你的命令或在命令行里输入调用程序命令source (”…”)。  
  
             3) 可以将自己编的程序通过用户自定义菜单来调用,这样就要修改菜单文件surfacer.mun , 加入  
  
                     “my function” -s “ursermain”  
  
以及在SYSTEM.cmd中加入  
  
                     source(”e:/myfunction.cmd”)  
  
这样就把菜单和程序连起来了。  
   
     具体的例子可以看附件  
  
     基本上scoll 的语言风格和c的很像,毕竟surfacer是用c和openGL编的。  
这个程序是在点云上任意用曲线选出一个小面来,然后将这个面用cross生成loft用的曲线,用这些曲线生成面后就可以用surfacer中的edit命令进行修改了。
作者: linying    时间: 2003-5-8 09:09
对于这个方法还可以用对曲面直接进行操作,复制曲面后用在曲面上的曲线取一个面积,用曲面和曲线的剪切命令实现曲面分为两部分,对小面修改。
作者: linying    时间: 2003-5-8 09:10
二.Surfacer 的oa程序接口  
我对这部分只知道一点,告知如下:  
surfacer提供了与C相连的外部程序接口。在你的surfacer目录下可以发现一个文件夹“oademo“,这是软件自带的示例文件,调用的步骤如下:  
1)将这文件夹中的文件复制到上个目录下,因为这是软件默认的。同时将另外的”include”和“lib”中的头文件和库文件复制到上个目录下。  
  
2)在菜单文件surfacer.mun中的oa section 区,即在文件的开头的两个注释区后,%%符号前加入  
PROGRAMA “OATEST.DLL”  
这里的PROGRAMA是标识 “OATEST.DLL”是通过C程序编译的dll文件,软件的示例里都已经生成了,至于如何编写是后话,反正可以提供比scoll更广阔的空间。  
在菜单栏里统样加入  
      “my function” -o “PROGRAMA:1”  
注意与scoll的不同。这里的1 是函数数,因为在user function中要用switch语句来实现多个程序的不同调用(程序可看oatest.c)。  
  
在调用程序后会发现出错信息,可以查到是MSVCRT.DLL的access violation入口侵犯。客观的原因可能是:这dll程序是用低版本的vc编的,因为他还有makefile。其他方面的原因很难推测,因为这是软件自带的示例程序。  
  
强烈希望知道如何用oa开发的高手指点一二。
作者: linying    时间: 2003-5-8 09:11
这些内容是我自己写的,在别的站上也发过一次,但没人回应,不知道是为什么?是不是没意义?
作者: Gabriel    时间: 2003-5-8 14:31
估计大家都在学SURFACER的基本操作及升级,还没心思搞二次开发
作者: moldwizard    时间: 2003-5-9 12:10
一般的工程问题,SURFACER的功能就完全能对付了.
二次开发的意义有多大呢?
作者: linying    时间: 2003-5-9 14:47
有些步骤比较重复就可以这样解决。
作者: linying    时间: 2003-5-9 14:49
要想将其用于专门的产品的处理,步骤相同,还可自己设计更好的操作功能嘛,不能说没意义吧
作者: WXD    时间: 2003-5-9 16:28
linying兄 你若做个SURFACE的列子我想大家会
响应的 你的东西对我们来说深奥了点
作者: cardfan    时间: 2003-5-9 18:42
难得的好文章!
我一直都想做这方面的工作,也是前段时间才找到这个二次开发的接口,好辛苦,而且很偶然。谢谢linying兄!以后多向你学习!
作者: linying    时间: 2003-5-9 19:48
谢谢上面的鼓励,一直以没有一分和无人响应而耿耿哩!!但不要以为我很厉害,我还很初级,因为没人交流(小地方),oa的问题我就没再深入了,但用scoll编程还有一些经验,过几天再整理出来。希望,你能帮我给帮主制造点压力,让我加点分吧!我想要surfacer的一些资料。
作者: cardfan    时间: 2003-5-10 08:18
你要surfacer的什么资料?我给你(我手头上有的)!
强烈要求给linying兄加分,他在这方面做的是首创性的工作,很有意义!
尽管很多人现在可能用不上,但以前有人问过相同的问题,却没有一个人能给出回答!
作者: zjn1982    时间: 2006-11-5 22:31
标题: 完全支持,我也在做二次开发~!!
完全支持,我也在做二次开发~!!
作者: engesi    时间: 2006-12-6 11:36
linying,你就是海洋大学的研究生吧
你可是在做Scoll开发的先者呀
作者: realoo217    时间: 2009-12-3 15:36
请问各位还做surfacer开发吗 小弟现在也要做这个东东 可以交流下么
作者: realoo217    时间: 2009-12-15 10:51
其实在调试程序时Surfacer会在程序目录下生成一个iware。txt文件  里面有警告说:WARNING: This data file was created by a greater version of this software.
数据文件由更高版本软件生成。  也许这是造成内存访问越界的原因呢 希望还有人关注这个问题
作者: Gloriey    时间: 2012-4-19 11:23

linying兄 ,可以留个QQ吗?小弟想和你交流一下。谢谢了!!!
作者: Gloriey    时间: 2012-4-19 11:24
我的QQ是421954105,求surfacer二次开发交流……




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3