iCAx开思网

标题: 【日积月累】:初学者必看!!! [打印本页]

作者: zgmzjddzxx    时间: 2002-10-23 21:45
标题: 【日积月累】:初学者必看!!!
为了减少初学者的弯路,希望在这个论坛提问时,先看看这些是不是你所需要的答案
问题一:如何加载一种自己定义的线,并把它变成线型            自己定义线型需要在acad.lin文件中添加定义,具体语法格式不是很复杂,可以查查手册之类的书,一般举一反三就能掌握。acad.lin是纯文本文件可以用记事本(如Windows记事本)编辑。
  
问题二如何将AutoCad图形转换成光栅图
             众所周知矢量图和光栅图各有优点,将两者结合起来取长补短乃是上上之策。AutoCad所绘制的图形是矢量图,在使用中也有一些缺点。例如:所绘制的图形颜色比较少,没有退晕等色彩变化,如果将它转换成光栅图,在Photoshop等软件中稍加修饰,其画面效果便大为增强,在方案竞选中更容易获胜。又如:用投影仪向大家介绍设计方案时,AutoCad在几个文件中切换速度非常慢,有时会缺少字体文件,令人十分尴尬。类似的问题还有许多,我们发现将AutoCad图形转换成光栅图可以很好的解决这些问题。下面以AutoCad R14为例,简述如下:  
  
---- 如果只需精度较低的光栅文件,只需在AutoCad中打开需要的图,单击菜单Tools→Display Image→Save ...,将需要的图储存为BMP图象即可,但通常这样生成的图精度太低。  
  
---- 如果需要精度较高的光栅文件,首先配置光栅文件打印机,启动AutoCAD R14,选择下位菜单Tools(工具)-&gtreferences...(系统配置...),屏幕出现系统配置话框,在对话框中选择Printer(打印机),然后选择右边的New...(新建N...),此时会出现添加打印机对话框,在该对话框中选择 Raster file export ADI 4.3 - by Autodesk, Inc 为可用打印机驱动程序,确定后会出现可供选择的支持模式,为了得到高质量的光栅文件,应该选择<11>,回车后会出现  
  
---- Enter width in pixels, 16 to 8000 <8000>可选择8000,数字越大光栅文件质量越好) Enter height in pixels, 16 to 8000 <8000>必须保持所选择的width/height的比值同所需转换的图形*.dwg的width/height比值相同)  
  
---- You can export the drawing in any of the following raster file formats. Please select the format you prefer.  
  
---- 1.Microsoft Windows Device-independent Bitmap (.BMP)  
---- 2.TrueVision TGA Format  
---- 3.Z-Soft PCX Format  
---- 4.TIFF (Tag Image File Format)  
  
---- Enter selection, 1 to 4 < 1 >如果需要真彩光栅文件请选择2.TrueVision TGA Format)  
  
---- 以下按提示回答就可以了。经过以上过程就完成了光栅文件打印机的配置工作,接下来就可以制作光栅文件了。  
  
---- 在Command:命令下键入Plot,在弹出的对话框的左上角选择 Device and Default Selection(设备和缺省选择),然后在选择设备配置中选择你所配的光栅文件打印机名称,以后的操作同制作一般的打印文件过程相同。
  
问题三给AutoCAD 增加超级编辑命令
             ---- AutoCAD在中国有很广泛的用户基础,同时也有很多专业的、业余的开发人员。从R13版本开始,Autodesk 提供了ARX开发工具,面向对象的特性使开发人员如沐春风。有关ARX编程与ADS编程的比较这里不再赘述,此处只讲如何用ARX实现我们所要求的功能,不足之处请指正。  
---- 许多二次开发软件均提供超级编辑命令,如Genius 14、HMCAD 6.0等等。读者或许对这些命令很感兴趣,能不能自己开发类似的功能呢?只要您对C++和ARX编程有一些了解,利用Autodesk提供的ObjectARX SDK软件包(可以到Autodesk网址上免费下载),您能很方便的写出此类程序,虽说不能和专业人员提供的超级编辑命令相媲美,但也能给您带来不少方便。本文利用ObjectARX提供的范例程序(缺省安装ObjectARX SDK后的路径是X:\OBJECTARX\ARXLABS\LAB07)进行简单的修改即可实现我们所要求的功能。以下是采用ObjectARX SDK 2.0,在MSVC 5.0编译环境下测试通过。  
  
---- 首先我们要修改enttemp.h文件:  
  
---- 原文件如下:  
  
class EntTemperature : public AcRxObject
{
public:
ACRX_DECLARE_MEMBERS(EntTemperature);
virtual double reflectedEnergy(AcDbEntity* pEnt) const = 0;
};
将斜体部分修改成如下:
virtual Adesk::Boolean HgyModify(AcDbEntity* pEnt)  
const = 0;
  
---- 因为我们以后要以EntTemperature作为基类,而且HgyModify函数在继承类中要重写并要求实现动态调用,故此处必须声明为虚拟函数。Virtual关健字即为C++面向对象的重要的特性。  
---- 第二、删除tempapp.def文件中的energy文本。  
  
---- 第三、修改tempapp.cpp文件:  
  
---- 1、 删除CircleTemperature、RigonTemperature及EllipseTemperature类的所有相关内容。  
  
---- 2、 修改原文件中如下的内容:  
  
class DefaultTemperature : public EntTemperature
{
public:
virtual double reflectedEnergy(AcDbEntity* pEnt) const;
};
double DefaultTemperature::reflectedEnergy
(AcDbEntity* pEnt) const
{
ads_printf("\nThis entity has no area, and no reflection.\n");
return -1.0;
}
修改后的内容如下:
class DefaultTemperature : public EntTemperature
{
public:
virtual Adesk::Boolean HgyModify(AcDbEntity* pEnt) const;
};
  
Adesk::Boolean DefaultTemperature::
HgyModify(AcDbEntity* pEnt) const
{
ads_printf("\nThe entity hasn't defined,  
and nothing to be modified.\n");
return Acad::eOk;
}
为简单起见,我们只对直线和圆定义超级编辑命令,
在此定义有关line和circle类。在tempapp.cpp
文件中增加CircleTemperature和LineTemperature类,
定义如下:
class CircleTemperature : public EntTemperature
{
public:
virtual Adesk::Boolean HgyModify(AcDbEntity* pEnt) const;
};
  
Adesk::Boolean
CircleTemperature::HgyModify(AcDbEntity* pEnt) const
{
AcDbCircle *pCircle = AcDbCircle::cast(pEnt);
if (!pCircle) {
ads_printf("The entity selected is not a circle\n");
pEnt- >close();
return Acad::eNotImplementedYet;
}
AcGePoint3d p,q;
double r;
p=P_TO_P(pCircle- >center());
  
if (getPoint((double*)(&p), "Center Point: ", p)== RTNORM
&& ads_getdist((double*)(&p), "Blob radius: ", &r) == RTNORM)
{
pCircle- >setCenter(p);
pCircle- >setRadius(r);
pCircle- >close();
}
return Acad::eOk;
}
  
class LineTemperature : public EntTemperature
{
public:
virtual Adesk::Boolean HgyModify(AcDbEntity* pEnt) const;
};
  
Adesk::Boolean
LineTemperature::HgyModify(AcDbEntity* pEnt) const
{
AcDbLine *pLine = AcDbLine::cast(pEnt);
if (!pLine) {
ads_printf("The entity selected is not a line.\n");
pEnt- >close();
return eNotImplementedYet;
}
AcGePoint3d p,q;
p= P_TO_P (pLine- >startPoint());
  
if (getPoint ((double*)(&p), "From Point: ", p)== RTNORM
&& getPoint((double*)(&p), "To point: ", q) == RTNORM)
{
pLine- >setStartPoint(p);
pLine- >setEndPoint(q);
pLine- >close();
}
return Acad::eOk;
}
  
---- 如您所见,HgyModify函数也要完全重写。至此我们对CircleTemperature和LineTemperature的定义已经完成。上面P_TO_P()只是一个点对点赋值,getPoint()是自定义的取点函数。增加全局变量:这样我们在初始化或清除内存过程中可以存取该类。  
LineTemperature *pLineTemp;
CircleTemperature *pCircleTemp;
InitApp()函数中更改部分:
acedRegCmds- >addCommand("TEMPERATURE_APP",  
"MODIFY", "MODIFY",
ACRX_CMD_TRANSPARENT, printEnergy);
更改程序中别的函数中的相应的部分。
注意printEnergy()函数中selectEntity()
函数的第二个参数必须是AcDb::kForWrite;
  
---- 编译后在AutoCAD(如R14)中测试运行,敲入modify后随便选取直线或圆,您就会能体会到超级编辑命令的方便之处。或许您会认为此命令没有什么特别之处,但若您仔细研究lab10子目录中的内容,定义自己的实体如门、窗或机械特征,特别是您自己才会用到的特殊对象,给对象增加此命令,您就会体会到ARX编程的魅力了
  
            
作者: zgmzjddzxx    时间: 2002-10-23 21:49
问题四:如何For R14 DWG 转换至位图从配置到成图全演示
第一步:打开系统配置;选“新建”
作者: zgmzjddzxx    时间: 2002-10-23 21:50
第二步:选取“Rast................”
作者: zgmzjddzxx    时间: 2002-10-23 21:51
第三步:选“11------uset de.......”用户自定义。
作者: zgmzjddzxx    时间: 2002-10-23 21:53
第四步:输入“4000”这是像素。数字越大越清晰,最大不超过8000。我选4000已经超清晰了
作者: zgmzjddzxx    时间: 2002-10-23 21:54
第五步:再输入高度。同上
作者: zgmzjddzxx    时间: 2002-10-23 21:55
第六步:我用TGA格式选“2”。用PS也可以打开。要用TIFF格式就选“4”
作者: zgmzjddzxx    时间: 2002-10-23 21:57
第七步:选“3”TGA24(16位真彩)
作者: zgmzjddzxx    时间: 2002-10-23 21:58
第八步:选“Y”
作者: zgmzjddzxx    时间: 2002-10-23 21:59
第九步:一直按回车,直到出现以下画面。已经建立了一个“user def...”。此名还可修改。点“修改
作者: zgmzjddzxx    时间: 2002-10-23 22:00
第十步:改上你的大名,即可
作者: zgmzjddzxx    时间: 2002-10-23 22:01
第十一步:现在来看看怎么用。选打印按钮。记得一定要“窗选”噢,不然有可能打出的文件是空白的。“再按文件名....”
作者: zgmzjddzxx    时间: 2002-10-23 22:02
第十二步:指定*.TGA所在的目录。我是放在“WORK”文件夹下。然后按确定。
作者: zgmzjddzxx    时间: 2002-10-23 22:05
问题五:新作了几个PAT填充文件如何融入原有ACAD.PAT
  
用dos的命令copy/b就可以了
COPY [/A | /B] source [/A | /B] [+ source [/A | /B] [+ ...]] [destination
[/A | /B]] [/V] [/Y | /-Y]
  
source Specifies the file or files to be copied.
/A Indicates an ASCII text file.
/B Indicates a binary file.
destination Specifies the directory and/or filename for the new file(s).
/V Verifies that new files are written correctly.
/Y Suppresses prompting to confirm you want to overwrite an
existing destination file.
/-Y Causes prompting to confirm you want to overwrite an
existing destination file.
  
The switch /Y may be preset in the COPYCMD environment variable.
This may be overridden with /-Y on the command line
  
To append files, specify a single file for destination, but multiple files
for source (using wildcards or file1+file2+file3 format).
  
还有就是可能是notepad打开acad.pat和你要加的pat,把这个些文本都用copy 和 paste到acad.pat中,保存就行.
  
另外这些pat如果没有将sld加到acad.slb,也是无法在bhatch里显示出来,你可以再制作sld再用acad的制作幻灯库命令加入到acad.slb.
其实r2000以上的版本只要将pat放在acad的工作路径里,bhatch就能显示正确的预览.
  
acad.pat是纯文本格式,用记事本或写字板都可以编辑,前者最好。只要你定义的新的pat格式正确,将它们放在最后或你认为适当的地方即可(复制、粘贴就行)。等你再次启动cad后就可以看到新的pat格式了(在Pattern的下拉列表中)。如果你想把你定义的pat放在较前位置,可以在acad.pat中上下调整。一试就灵
作者: zgmzjddzxx    时间: 2002-10-23 22:09
问题六:如何在绘图仪中打印嵌有EXCEL的CAD图
  
解决方法(任选一种):
1.使用postscript语言的驱动程序生成plt文件
2.生成PDF文件打印
3.把绘图仪共享成网络打印机
4.把dwg文件拷到绘图仪所在电脑上,使用绘图仪的windows系统驱动程序印
5...
作者: zgmzjddzxx    时间: 2002-10-23 22:12
问题七:怎样输入带有上标(或下标)的文字
  
比如要输入30平方厘米,那怎样输入30cm上标的2字?
在mtext框中输入10cm^2,然后选择上^2点击按钮a/b,就可以了
输入2^再选上点击a/b就会是下标
作者: zgmzjddzxx    时间: 2002-10-23 22:15
问题八:如何调整AUTOCAD的线型?
通过全局地或单个地修改每一个对象的线型比例因子,可以以不同的比例使用同一个线型。  
  
默认情况下,AutoCAD 使用全局的和单独的线型比例 1.0。该值越小,每个绘图单位中画出的重复图案越多。例如,设置为 0.5 时,每一个图形单位在线型定义中显示重复两次的同一图案。不能显示完整线型图案的短线段显示为连续。对于太短,甚至不能显示一个虚线小段的线段,可以使用更小的线型比例。  
  
“线型管理器”显示“全局比例因子”和“当前对象缩放比例”。“全局比例因子”的值控制LTSCALE 系统变量,该系统变量可全局地更改新建和现有对象的线型比例。
“当前对象缩放比例”的值控制CELTSCALE 系统变量,该系统变量可设定新建对象的线型比例。
将 CELTSCALE 的值乘以 LTSCALE 的值可获得已显示的线型比例。在图形中,可单独地或全局地轻易更改线型比例。  
  
在布局中,可通过PSLTSCALE 在不同的视口中调节线型比例。
更改选定对象的线型比例的步骤  
  
1.在“标准”工具栏上单击“特性”。  
2.选择一个或多个对象。  
3.在“特性”窗口中选择“线型比例”框,并输入新值。

还有CHPROP命令的S选项,也可以修改一个曲线实体自身的线比放大系数(相对于全局线型比例),使得在一个全局LTSCALE下,每个曲线实体可以有自己的表现形式。
  
下面给你贴个下版本“晓东工具箱”里面的两个命令,可以大批修改。第二个命令XLtLocScl的优点是:可以有在当前显示状态下(可能修改过自身线比系数)的相对放大选项(便于根据显示,自己灵活调整出最佳效果)
  
code:  
;|
   命令:XLtScale
   
   功能:设置全局线型比例因子
|;
(defun c:XLtScale (/ val)
   (initget 6)
   (if (setq val (getreal (strcat "\n请输入全局线型比例因子<" (rtos
                    (getvar "ltscale")
                    2 2
                    ) ">:"
        )
     )
       )
     (progn
       (setq $XLtScale_val val)
       (setvar "ltscale" $XLtScale_val)
     )
   )
   (princ)
)
;|
    命令:XLtLocScl
     
    功能:设置曲线实体自身单独的线型比例放大系数
     
    说明:可以有在当前显示状态下(可能修改过自身线比系数)的相对放大选项(便于根据显示,自己灵活调整出最佳效果)
|;
(defun c:XLtLocScl (/ ss scl tf len i tf1)
   (prompt "\n选取要修改线比的曲线实体<退出>:")
   (if (setq ss (ssget '((0 . "*line,circle,arc,ellipse"))))
     (progn
       (if (not $XLtLocalScale_val)
   (setq $XLtLocalScale_val 2.0)
       )
       (setq tf1 (xdrx_yesorno "\n是否只对改变过线比放大系数的曲线操作" 0))
       (setq tf (xdrx_yesorno "\n是否按照当前显示变比" 1))
       (initget 6)
       (if (setq scl (getreal (strcat "\n线型比例放大系数<" (rtos $XLtLocalScale_val
                  2 2
                  ) ">:"
            )
         )
     )
   (setq $XLtLocalScale_val scl)
       )
       (xdrx_setsstodb ss 0)
       (setq i 0 len (sslength ss))
       (while (xdrx_getentdata 0)
   (if (= tf1 1)
     (progn
       (if (setq scl (xdrx_getentdxf 48))
         (progn
     (if (= tf 1)
       (setq scl (* scl $XLtLocalScale_val))
       (setq scl $XLtLocalScale_val)
     )
     (xdrx_modent 48 scl)
     (setq i (1+ i))
         )
       )
     )
     (progn
       (if (and
       (setq scl (xdrx_getentdxf 48))
       (= tf 1)
     )
         (setq scl (* scl $XLtLocalScale_val))
         (setq scl $XLtLocalScale_val)
       )
       (xdrx_modent 48 scl)
       (setq i (1+ i))
     )
   )
       )
       (prompt (strcat "\n共选取了" (itoa len) "条曲线,完成了" (itoa i) "条曲线的线性变比操作."))
     )
   )
   (princ)
)
  
   
当加入新的线型实休,发现需要重新设定放大系数,这些经过改动过的实体,就很难再一次选中,在凭记忆和眼力,如果再有一个选定这些实体的过滤代码就好了,可以一次选定这些实体,再次改动放大系数.
作者: zgmzjddzxx    时间: 2002-10-23 22:19
问题九:怎样进入ACAD时自动APPLOAD ARX的程序
一个方法是:在ACAD的安装目录下建立ACAD.RX文件,ASCII码格式,文件内容为ARX文件名,一行一个。
作者: kugerry    时间: 2002-10-27 22:20
谢谢斑竹同志有这么耐心细致的讲解,小弟佩服,收益非浅啊
作者: yifan    时间: 2002-11-7 15:00
謝謝
作者: SIHT    时间: 2002-11-9 14:43
真的太高深了!
作者: zgmzjddzxx    时间: 2002-11-20 09:24
在R2000及以上版本打印出空心字的解决方法:TEXTFILL=1
作者: bigsouls    时间: 2005-9-16 21:58
晕~都看不懂的呢?
作者: yuanyue    时间: 2005-9-17 16:45
一点都看不懂!
作者: nwxinfu1314    时间: 2005-10-16 14:50
谢谢
作者: hfy_6    时间: 2005-11-7 13:54
謝謝啦
作者: xiaoqiaogen    时间: 2005-12-19 22:12
真不错,謝謝啦
作者: silly    时间: 2006-1-14 08:54
好好好,就是没看
作者: lxyug    时间: 2006-1-17 14:18
真是好东西.
作者: seaseasea    时间: 2006-1-17 17:31
好东西,谢谢了!!!!!
作者: trong    时间: 2006-1-18 17:35
好东西
作者: sophy5566    时间: 2006-2-21 17:54
支持!支持!
作者: sophy5566    时间: 2006-2-25 14:34
支持
作者: sz_qch    时间: 2006-3-4 14:31
谢谢楼主啊!~~
作者: sz_qch    时间: 2006-3-4 14:33
谢谢楼主啊!~~
作者: lostq    时间: 2006-3-5 20:06
浪个看不当懂哦 ?
作者: youyiming    时间: 2006-3-6 23:41
正在接处当中,谢谢!
作者: wwh-97    时间: 2006-3-28 18:34
标题: 圆渐开线
谁教我用AUTO CAD画圆渐开线
作者: szww    时间: 2006-6-19 22:00

作者: wonjtlt    时间: 2006-7-11 09:06
除了上标下标,全没有看懂。
作者: houpingliang    时间: 2006-9-9 21:15
果然是初学者必看,我来晚了!
作者: sontj    时间: 2006-9-11 12:48
真是太深奥了,不懂!
作者: 微风吹兰杜    时间: 2006-9-12 08:30
好东东,谢谢楼主!
作者: jiayou8866    时间: 2006-9-20 11:27
刘小强啊!
作者: tony_wony    时间: 2006-11-3 10:26
高!!!!
作者: zxflsm    时间: 2006-12-31 21:00
想要学好cad还得不苦功夫
作者: duxuangod    时间: 2007-3-2 20:59
谢谢
作者: lsk111    时间: 2007-3-21 20:52
本人刚成为会员,甘麻要设阅读权限呀???????弄得到看不到
作者: leething    时间: 2007-3-22 07:27
好东西啊。。。
作者: 258167967    时间: 2007-10-18 00:15
顶一下
作者: zhuzhaowei    时间: 2007-11-5 22:37
看不懂,要慢慢消化
作者: wjywjy832    时间: 2007-11-11 22:53
hao  zhic
作者: simon11    时间: 2007-12-18 10:39
不错,发贴辛苦了,这些功能是很好的
作者: 801215    时间: 2008-2-12 17:21
好少的帖子阿
cad大家都沒有人理會他了..
作者: enhwa    时间: 2008-5-9 16:56
看不懂,要慢慢消化
作者: iosk    时间: 2008-7-15 20:46
标题: 很好的资料
很好的资料
学习
作者: smallmimi    时间: 2009-3-16 14:40
函數設定感覺有些複雜
作者: kakale    时间: 2009-6-17 22:46
呵呵,来学习了
作者: 379280626    时间: 2009-12-19 08:06

作者: jtaihua    时间: 2010-7-1 17:34
very good document
作者: 爱飞儿    时间: 2010-11-26 19:15
看不懂哦   不知道




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