我正在使用Java绘制dxf文件。到目前为止,我可以绘制LINES
,POLYLINES
,TEXT
,CIRCLE
,ARC
,LWPOLYLINES
。
但我在绘制INSERT
个实体时遇到了问题。我知道这被映射到块实体,但是当我绘制它们时,没有显示任何内容。我知道你必须对INSERT
实体进行一些转换,但我不知道如何做到这一点。我用Google搜索了很多但没有运气。所以我希望你能指明如何处理INSERT
实体。我还看了一些像ycad和dxf-code这样的框架,但是代码很难跟踪。
INSERT
和LINE
ARC
的算法是什么?
由于
约翰
答案 0 :(得分:2)
很难为您提供明确的答案,因为我们看不到任何代码。但是,在AutoDesk网站上描述了管理INSERT
功能的方式。以下是blocks in DXF files的信息。
它还提供了有关两个重要条目BLOCK
和ENDBLCK
的信息。
以下是其中包含LINE
和ARC
的块的示例。该块将如下所示:
该块名为 SAMPLE :
0
BLOCK
8
0
2
SAMPLE
70
0
10
0.0
20
0.0
30
0.0
3
SAMPLE
1
0
ARC
5
263
8
0
10
0.0
20
22.4468613708478415
30
0.0
40
242.9028467109147016
50
354.6976825438280798
51
185.3023174561718918
0
LINE
5
264
8
0
10
-241.8634560136443099
20
0.0000000000001137
30
0.0
11
241.8634560136443099
21
-0.0000000000002274
31
0.0
0
ENDBLK
5
262
8
0
基本上,您有一个定义块实体的条目。它将具有原点,并且所有值都相对于元素的原点。
如果您先设计它,那么您将知道该怎么做。
一旦定义了BLOCK
,您就可以将其用作INSERT
。
BLOCK
本身。关键是起源。大多数定义的坐标为0,0,0。然后相对于此原点绘制ENTITIES
,比例为1:1。
想象一个矩形,1个单位平方,比例因子为1。然后坐标为:
-0.5, 0.5
0.5, 0.5
0.5, -0.5
-0.5, -0.5
我希望这些信息可以帮到你。
答案 1 :(得分:0)
BLOCK
实体(也称为块定义)本质上是INSERT
的“蓝图”(也称为块参考)。
不是为图中的每个块引用复制构成块的所有几何信息,而是块定义(BLOCK
实体)是每个块引用的“模板”,意味着只有位置,旋转&安培;需要存储每个块引用的比例。
块定义位于块符号表内,由BLOCK
头实体(定义块名称和原点(通常为0,0)等)组成,后跟构成块定义的所有几何,最后是终止ENDBLK
实体。
块定义中包含的所有几何都是相对于块定义的原点定义的;然后,当创建块引用(INSERT
)时,块定义几何体将相对于块引用的插入点进行转换。