![]() |
【转帖】求教两个问题:不随放大缩小改变大小方向的字体图形的实现和取消cad命令问题
求教两个问题:不随放大缩小改变大小方向的字体图形的实现和取消cad命令问题
求教两个问题:不随放大缩小改变大小方向的字体图形的实现和取消cad命令问题 问题1: 我用程序在cad里面里面画了一幅图,想要给它做点标注,但是用作出的标注字体大小总是不好控制,特别是旋转图形后,标注朝向变化导致看不清楚字体。看cad里面的坐标轴上的“xyz”这三个字符以及对应的三个箭头总是一般的大小,不论我怎么放大缩小图形都不会变化,而且旋转图形时它们的朝向也不会改变。请问objectarx可不可以实现这种功能?如果可以,请问该怎么实现? 问题2: 一个对话框有多个按钮,对应函数如下: classdlg:nbutton1() { …… ads_name sel; ads_point pt; int nerror = 0; nerror = acedentsel(converttounicode(_t("\nselect object:")), sel, pt ); …… } classdlg:nbutton2() { …… ads_point pt; int iresult = rterror ; iresult = acedgetpoint( null, converttounicode(_t( "\nselector point" )), pt ); …… } classdlg:nbutton3() { …… ads_point pt; int iresult = rterror ; iresult = acedgetpoint( null, converttounicode(_t( "\nselector point" )), pt ); …… } 这样,如果我点击按钮1,执行onbutton1到acedentsel选择对象,但这时候并没有选择对象,而是点击按钮2,执行onbutton2到acedgetpoint,同样不选点,执行onbutton3,则会弹出错误。 为了解决这个错误,我在onbutton1、onbutton2、onbutton3前都加上语句acedgetacadtextcmdline()->sendmessage(wm_char, vk_escape, 0 );想要模拟一个“esc”的按键给cad取消前面的命令。但是,在执行了这条语句后接下来的第一个acedgetpoint或acedentsel都会不用在界面上选择点或者对象就直接略过去了,错误返回提示用户取消命令。请问这是什么原因?有什么方法可以解决呢? 怎么没人理我啊 是不是因为我说得不清楚啊? 我刚学objectarx没多久, 不知道该怎么表述才对, 还请各位大侠不啬指教啊! 第一个问题:我想你说的一个是像素单位一个是世界坐标单位,这两个系统不一样,因此对于像素单位永远大小一样,不论你是否缩放cad的窗口,它左下角的箭头大小不变,这如同你使用gdi在cad的客户区绘制图形一样,不会因为缩放而变化,(不信你试试).另外,有个这样的函数acedcoordfrompixeltoworld,此函数将像素单位转化为世界坐标值,反之亦然,我想能给些启示. 第二个问题:这很简单,看来你的例子看少了,例如: begineditorcommand(); //在这两行代码中间与cad交互,调用acedgetxxx()函数!!!!!!!!! completeeditorcommand(); 谢谢afeiwang51981指导!明天就回公司试试! 本帖最后由 chuyuan 于 8-12-24 10:48 am 编辑 我前面试了一下,第二个问题因为我的对话框不是继承自arx的,begineditorcommand是一些保护函数,我这里不能用。至于第一个问题,我还是没怎么弄明白。另外,请问“这如同你使用gdi在cad的客户区绘制图形一样”,请问这是怎么用的?我是前面简单学了一下objectarx没多久,现在还是什么都不明白啊 第一个问题,设置标注字体可能是和标注样式相关的,标注样式和线型字型之类的东西类似,可以看下帮助 第二个问题,在模态窗口和cad进行交互需要实现锁定文档,跟是否继承与cacuidiadlg没有关系, |
所有的时间均为北京时间。 现在的时间是 04:22 AM. |