CAD是在工业与建筑领域运用非常广泛的绘图软件,CADSoftTools公司旨在帮助客户更方便有效地处理设计与项目文档。旗下多款CAD控件和软件也是受到广泛关注,如CAD .NET、CAD VCL、ABViewer等等。
在实际的操作中,我们或多或少的都会遇到各种“疑难杂症”。别慌!小编特意为大家整理了近期CAD技术者的技术问答,免去了你四处搜索的繁琐过程。在慧都,也许就有你想要的所有答案!
CADSoftTools——CAD.NET常见问题解答
Q:关于使用SaveToFile和SaveAsDXF导出(或保存)部分区域的问题
问:需要确定的是:是否没有方法来裁剪或使用SaveAsDXF在选定区域的DXF中获得完整详细的导出?
答:当涉及到DXF导出时,您不能保存选定的区域,您可以保存某些CAD实体(例如CADImage.SelectedEntities):
- 创建一个新的CADImage实例
CADImage cadImage = new CADImage(); cadImage.InitialNewImage();复制代码
- 使用CADEntity后代类的构造函数和方法CADEntity.AssignEntity创建实体的副本,然后将创建的副本添加到新的CADImage。或者使用CADImage.CopyEntities和CADImage.PasteEntities方法将实体复制/粘贴到新的CADImage中。
更多CAD.NET精彩问答尽在 >>【FAQ】CAD .NET热门技术问答精选合集
CADSoftTools——CAD.VCL常见问题解答
Q:是否能展示一个爆炸方块的代码?
A:您将在下面找到所需的示例代码:
interface
uses
..., CADImage, DXFConv, sgFunction, sgConsts;
...
implementation
{$R *.dfm}
procedure ExplodeInsert(ACADImage: TsgCADImage; AInsert: TsgDXFInsert);
var
I, J: Integer;
vBlockEnt: TsgDXFEntity;
vDXFInsert: TsgDXFInsert;
vDXFLine: TsgDXFLine;
vDXFLWPolyline: TsgDXFPolyline;
vDXFCircle: TsgDXFCircle;
vMatrix: TFMatrix;
vPoint, vScale, vExtrusion: TFPoint;
vAngle: Double;
begin
vMatrix := AInsert.GetMatrix;
// Iterate through entities in the block
for I := 0 to AInsert.Block.Count - 1 do
begin
vBlockEnt := AInsert.Block.Entities[I];
case vBlockEnt.EntType of
ceLine: // LINE entity
begin
// Create a copy of the entity which is inside the block
vDXFLine := TsgDXFLine.Create;
vDXFLine.AssignEntity(vBlockEnt);
// Multiply coordinates of the created entity by the transformation matrix
vDXFLine.Point := FPointXMat(vDXFLine.Point, vMatrix);
vDXFLine.Point1 := FPointXMat(vDXFLine.Point1, vMatrix);
ACADImage.Converter.Loads(vDXFLine);
ACADImage.CurrentLayout.AddEntity(vDXFLine);
end;
ceLWPolyline: // LWPOLYLINE entity
begin
vDXFLWPolyline := TsgDXFLWPolyline.Create;
vDXFLWPolyline.AssignEntity(vBlockEnt);
for J := 0 to vDXFLWPolyline.Count - 1 do
vDXFLWPolyline.Vertexes[J].Point := FPointXMat(vDXFLWPolyline.Vertexes[J].Point, vMatrix);
ACADImage.Converter.Loads(vDXFLWPolyline);
ACADImage.CurrentLayout.AddEntity(vDXFLWPolyline);
end;
ceCircle: // CIRCLE entity
begin
vDXFCircle := TsgDXFCircle.Create;
vDXFCircle.AssignEntity(vBlockEnt);
vDXFCircle.Point := FPointXMat(vDXFCircle.Point, vMatrix);
vDXFCircle.Radius := DistanceFVector(AffineTransformPoint(MakeFPoint(0, vDXFCircle.Radius, 0), vMatrix));
ACADImage.Converter.Loads(vDXFCircle);
ACADImage.CurrentLayout.AddEntity(vDXFCircle);
end;
ceInsert: // nested INSERT entity
begin
//ExplodeInsert(ACADImage, vSrcEnt as TsgDXFInsert);
vDXFInsert := TsgDXFInsert.Create;
vDXFInsert.AssignEntity(vBlockEnt);
ExtractMatrixParams(FMatXMat(TsgDXFInsert(vBlockEnt).GetMatrix, vMatrix), vPoint, vScale, vExtrusion, vAngle);
vDXFInsert.Point := vPoint;
vDXFInsert.Scale := vScale;
vDXFInsert.Extrusion := vExtrusion;
vDXFInsert.Angle := vAngle;
ACADImage.Converter.Loads(vDXFInsert);
ACADImage.CurrentLayout.AddEntity(vDXFInsert);
end;
end;
end;
// Delete the INSERT after exploding
ACADImage.Converter.RemoveEntity(AInsert, True);
// Recalculate the CAD image extents
ACADImage.GetExtents();
end;复制代码
更多CAD.VCL精彩问答尽在 >>【FAQ】CAD.VCL热门技术问答精选合集
CADSoftTools——ABViewer常见问题解答
Q:关于ASCII DXF格式
问:当将图纸导出到DXF时,无论我指定哪个版本,都无法在我使用的任何软件中读取它(PADS,Altium,Pulsonix,LibreCAD,...)。当查看文件时,第一个line是“999”,删除该行没有用。想问有什么是错了吗?
答:ABViewer创建了兼容AutoCAD的DXF文件。尝试使用AutoCAD或DWG TrueView打开输出DXF图形。
更多ABViewer精彩问答尽在 >>【FAQ】ABViewer热门技术问答精选合集
想要高质量、高效率、低成本完成专业的CAD编辑与预览吗?良心推荐:ABViewer【点击了解更多功能介绍】——一款简单实用的CAD文档管理工具。