[原创]DCL中实现:块动态预览
本帖最后由 作者 于 2009-4-24 19:48:43 编辑 <br /><br /> <p>因为要写个小程序用到了DCL对话框和块,</p><p>打算着搞个DCL中的块动态预览,就写了个出来,</p><p>先传上给大家PP一下哈!</p><p>下面是主程序:</p><p></p><p>还有个别函数在这个库中,</p><p>下载有<a href="http://fstl.ys168.com/"><strong>飞诗CAD程序管理大一统</strong></a>的可以不用下载这个了.</p><p></p><p></p><p></p> <p>飞诗,能说说思路不?</p><p>DCL的image这块,一直在想着怎么把SLD集合到LISP中。就像DCL一样。</p><p>虽然vector_image可以实现,但是感觉还是太麻烦。。。</p> <p>看看程序是先输出wmf文件.再显示的</p><p>wmf如何可以在dcl显示?转换为sld?不明白.</p><p>SHOWOBJSS <br/>INSERT <br/>GETWMF <br/>GETALLBLK <br/>DRAWLINE <br/><br/><font color="#f70909">C:\Documents and Settings\xxx\Local Settings\Temp\oxn.wmf<br/><br/></font>test:dialog {<br/> label = "块预览测试" ;<br/> :row {<br/> :image_button {<br/> aspect_ratio = 1.2 ;<br/> color = black ;<br/> height = 20 ;<br/> key = "pic" ;<br/> }<br/> :list_box {<br/> height = 25 ;<br/> key = "style" ;<br/> width = 30 ;<br/> }<br/> }<br/> ok_only;<br/>}</p><p><font color="#ae33cc" size="4">猜想..:点取块后.在图中插入块.输出wmf文件.再读取wmf文件数据.再dcl中画出来.<br/>核心.读取wmf数据转换为vector_image所需要的点数据.</font></p> <p>是的啊!~GETWMF 函数就是读入wmf,</p><p>INSERT函数就是<font color="#ae33cc" size="4">插入块!</font></p> <p>是读取wmf文件用<font color="#ae33cc" size="4">vector_image画出来的??</font></p> <p>程序思路猜想如下:</p><p>先把DCL输出到Temp,启用对话框</p><p>里面列举所有块名</p><p>点击某个块名,则将该块导出为WMF</p><p>再将WMF导入回来,缩小后放到对话框的后面(飞诗缩的不够小啊),删除WMF</p><p>因为WMF格式导入后 里面所有的图元都转换为POLYLINE!</p><p>根据GetBoundingBox返回的结果和image大小做高宽比调整</p><p>(修改了程序的DCL后发现飞诗的程序依然可以将图像居中显示 所以不是按照固定image高宽计算)</p><p>这样可以很方便的获得所有的线(vertex)</p><p>使用<font color="#000000" size="4">vector_image函数绘制在DCL-image里面即可</font></p><p><font size="4">----------------------------------------------</font></p><p><font size="4">本来自己也可以计算转换所有的图元为PLINE然后用vector_image绘制</font></p><p><font size="4">但是飞诗通过WMF巧妙的完成这一步,快速实现DCL预览图块</font></p><p><font size="4">程序的进一步改进可以实现:</font></p><p><font size="4">把image改为带有任意图像和文字的按钮来用。(分析WMF后自动生成DCL对应代码即可)</font></p> <p>就是这样的:</p><p>1.插入块(隐藏的)</p><p>2.再[缩放+移到]中窗口中心</p><p>缩放比我是按CAD窗口大小的比例计算的,</p><p>大小可以用参数控制.太大了就不够美观,太小了则输出的WMF精度不够.</p><p>3.输出wfm.</p><p>4.读入wfm.并读出里面的<font size="4">PLINE点与颜色参数.</font></p><p><font size="4">5.换算一下坐标,用vector_image绘制到image.</font></p><p><font size="4">==============</font></p><p><font size="4"><strong><font face="Verdana" color="#61b713">carrot1983:</font></strong></font></p><p><font size="4">如果只是当作固定的"幻灯片"用,</font><font size="4">只要保存一下[换算后的坐标],</font></p><p><font size="4">输出成txt文件,再复制到Lisp程序中,以后就不用打包幻灯片了.</font></p> <p>飞诗有空的话可以试试导入WMF是否可以用DBX实现隐藏处理</p> fsxm发表于2009-4-25 16:28:00static/image/common/back.gif就是这样的:1.插入块(隐藏的)2.再中窗口中心缩放比我是按CAD窗口大小的比例计算的,大小可以用参数控制.太大了就不够美观,太小了则输出的WMF精度不够.3.输出wfm.4.读入wfm.并读出里面的PLINE点与<p> 谢谢。</p><p>vector_image 确实不会用。</p><p>(vector_image x1 y1 x2 y2 color)</p><p>我尝试过把x1 y1 x2 y2 采用实数类型的数字。不行。是否只能为整数。(向量的特性)</p><p>如果是这样子,又如何实现PLINE_PT_LIST -> vector_image ???</p><p>这个困扰很长时间,一直扔着没解决的问题,望能指点迷津。</p><p></p> 在布局空间无效哦
页:
[1]
2