- UID
- 74140
- 积分
- 1782
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-8-22
- 最后登录
- 1970-1-1
|
发表于 2005-3-29 11:27:08
|
显示全部楼层
用C写.DWG图形函数库dwg.dll,使用说明
***************************************
(VC++ 6.0 版)
作者: 朱群 2001.7.29
一、样板文件版本为ACAD 10.06版,文件名为std.dwd,已合并入dwg.dll,
程序运行时会将其释放到C:\std.dwd,本函数库已删除了turbo 2.0版的
支持建图块、插入图块的函数、图块属性函数。
所有实体的坐标均是相对于基点的坐标,实体的尺寸乘以比例因子。
同一张图纸中可能有几幅比例不同的图,作图时可将每一幅图设一基点和比例
因子,各图均用相对于基点的坐标和实际尺寸绘出,设置坐标基点和绘图比例
用下面的函数。
a.设置图块基点,初始设置为(0,0)
setbaseXY(double x,double y)
x,y---总体坐标基点
b. 设置局部坐标基点,初始设置为(0,0)
setrbase(double x,double y)
x,y---相对于总体坐标的局部坐标基点
c.设置绘图比例,初始设置为 1
setscale(double sca)
d.返回当前基点及比例
double getscale()
double getbasex()
double getbasey()
e.总体坐标基点、局部坐标基点、比例三者之间的关系
设总体坐标基点为zt_x,zt_y,局部坐标基点为zb_x,zb_y,
局部坐标基点的绝对坐标为jd_x,jd_y,则:
jd_x=zt_x+zb_x*scale;
jd_y=zt_y+zb_y*scale;
二、构造DWG文件头尾
1. 构造DWG文件的文件头
startdwg(char *filename)
char *filename=DWG文件名(不含"DWG"扩展名)
2. 构造DWG文件的文件尾
enddwg()
三、实体颜色线型的修改
1. 修改实体颜色
chgcolor(char nom)
2. 修改实体线型
chgltype(char nom)
3. 恢复为层颜色
colorbylayer()
4. 恢复为层线型
ltypebylayer()
线型定义:
*DASHED,__ __ __ __ __ __ __ __ __ __ __ __ __ __ __
A,.5,-.25
*HIDDEN,_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
A,.25,-.125
*CENTER,____ _ ____ _ ____ _ ____ _ ____ _ ____ _ ____
A,1.25,-.25,.25,-.25
*PHANTOM,_____ _ _ _____ _ _ _____ _ _ _____ _ _ ____
A,1.25,-.25,.25,-.25,.25,-.25
*DOT,...............................................
A,0,-.25
*DASHDOT,__ . __ . __ . __ . __ . __ . __ . __ . __ . __
A,.5,-.25,0,-.25
*BORDER,__ __ . __ __ . __ __ . __ __ . __ __ . __ __
A,.5,-.25,.5,-.25,0,-.25
*DIVIDE,__ . . __ . . __ . . __ . . __ . . __ . . __
A,.5,-.25,0,-.25,0,-.25
( STD.DWG中线型比例为20.00 )
线型定义
CONTINUOUS 0
DASHED 1
HIDDEN 2
CENTER 3
PHANTOM 4
DOT 5
DASHDOT 6
BORDER 7
DIVIDE 8
颜色定义
Red 1
Yellow 2
Green 3
Cyan 4
Blue 5
Magenta 6
White 7
四、实体
1. 写入直线实体
wline(double x1,double y1,double x2,double y2)
double x1,y1=直线起点
double x2,y2=直线终点
2. 写入圆实体
wcircle(double x,double y,double r)
double x,y=圆心
double r= 半径
3. 写入点实体
double x,y=点座标
4. 写入圆弧实体
warc(double x,double y,double r,double sa,double ea)
double x,y= 圆心
double r= 半径
double sa,ea=圆弧的起始角和终止角(角度制)
5. 三维面
w3dface(double x1,double y1,double x2,double y2,\
double x3,double y3,double x4,double y4,double thick)
6. 填充
wsolid(x1,y1,x2,y2,x3,y3,x4,y4)
double x1,y1,x2,y2,x3,y3,x4,y4;
7. 画LINE多折线
nline(int n,...)
n---折线坐标点数,n>=2
(...)---坐标必须为浮点数,且最少有两个点
8. 画LINE多边形
lpolygon(int n,...)
n---折线坐标点数,n>=2
(...)---坐标必须为浮点数,且最少有两个点
五、文本处理,[]中为初始设置
1. 设置字高[3.5],文本字高不受图中比例的影响
settexthigh( double h)
2. 设置文本旋转角[0]
settextrotang( double ang)
3. 设置宽度因子[1]
settextxscale( double xsca)
4. 设置倾斜角[0]
settextobliq( double obl)
5. 设置字型 [STANDARD]
settextstyle( char sty)
字型sty取下面宏定义
STANDARD 0 /* txt */
HZ_CMPLX 1 /* complex,hztxt */
CMPLX_VERT 2 /* complex 垂直字型 大字体无垂直字型*/
HZ_ROMS 3 /* romans,tztxt */
ROMS_VERT 4 /* romans 垂直字型 大字体无垂直字型*/
注:请不要将对齐方式Fit用于垂置字形
6. 设置生成方式
settextccstyle( char cc)
Bkword 0x02 反向
Updown 0x04 颠倒
7. 设置对齐方式
settextdqstyle(char dq)
Start 0 起点
Center 1 中央
Right 2 右对齐
Align 3 两点这间对准,高度可变
Mid 4 中点对准
Fit 5 文本在两点之间拟合,宽度可变
注: 设置对齐方式Align/Fit后,wtext 函数要输入对齐点,否则会出现浮点错
8. 除字高外,恢复系统初始设置
cltextset()
9. 写入文本实体
wtext(double x,double y,char *text,...)
double x,y=文本左下角起始点或对齐点(中心点,中央点)
char *text=文本字符串
...为对齐点 double dqx,double dqy,仅在Fit及Align方式要输入
10. wtext(double x,double y,char *text,double dqx,double dqy)
double x,y=文本左下角起始点或对齐点(中心点,中央点)
char *text=文本字符串
double dqx,double dqy为对齐点,仅在Fit及Align方式起作用
六、设置层名称及该层的颜色号、线型
setlayer(char *layna,int color,int linetp)
char *layna=要设置的层名
int color =要设置的颜色号
int linetp =要设置的线型
七、多义线
1. 设置多义线的线宽
setplinew(double sw,double ew)
sw=多义线的起始宽度
ew=多义线的结束宽度
2. 写入多义线的头部
wpline(char attr2)
attr2:=0 非闭合的
=1 闭合的(close)
=2 园弧拟合的(fit)
=4 B样条拟合的(spline)
可以进行叠加(如5=1+4)
3.写入多义线的顶点
wvertex(double x,double y,char attr2)
double x,y 顶点座标
attr2:=0 多义线为直线
=1 多义线为园弧
4.写入多义线的尾部
wseqend()
5.画园环
wdoughnut(double x,double y,double rr,double ww)
double x,y= 园环的园心座标
double rr,ww=半径及线宽
6.画矩形
wrect(double sx,double sy,double ex,double ey)
7.画单条复线
pline(double x1,double y1,double x2,double y2)
8.画PLINE多折线,用本函数前可用setplinew(sw,ew)设置线宽
npline(int n,...)
n---折线坐标点数,n>=2
(...)---坐标必须为浮点数,且最少有两个点
9. 画多边形,用本函数前可用setplinew(sw,ew)
ppolygon(int n,...)
设置线宽
n---多边坐标点数,n>=3
(..)---坐标必须为浮点数,且最少有三个点
八、其它
计算字符串长度,一个汉字算一个字符,返回字符串长度
int Strlen(char *str)
主要用于水位及高程标注文字
九、使用方法:
(1) 将DWG.DLL拷到C:\windows\system中
(2)生成自己的项目文件,并将DWG.LIB、DWG.H加入其中
(3)按通常的编程方法调用DWG.H中的上述函数即可。 |
|