【CADSoftTools技术问答集锦】从绘制到阅览,为您精选最实用的CAD工具

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.CopyEntitiesCADImage.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文档管理工具。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值