You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Altium Designer V23中DelphiScript报expecting ;错误的解决求助

DelphiScript在Altium Designer V23中'expecting ;'错误排查与解决

错误原因

你怀疑的语句本身语法无问题,但Altium的DelphiScript对枚举类型的引用有特殊要求:eTrackObject、eNoDimension、eRouting这类枚举值必须加上所属命名空间前缀,否则脚本解析器会将其识别为未定义变量,引发解析混乱,最终触发'expecting ;'的错误提示。另外,直接调用LayerStackup也属于未定义错误,同样会干扰语法解析。

修正后的完整代码

procedure CrearPistaDeCobre;
var
    PCBBoard: IPCB_Board;
    Track: IPCB_Track;
    StartPoint, EndPoint: TCoordPoint;
begin
// Obtener la placa activa
    PCBBoard := PCBServer.GetCurrentPCBBoard;
    if PCBBoard = nil then
    begin
        ShowMessage('No hay una placa activa.');
        Exit;
    end;

    // Crear un objeto de pista - 添加枚举类型前缀
    Track := PCBBoard.AddPCBObject(TPrimitiveType.eTrackObject, TDimensionStyle.eNoDimension) as IPCB_Track;

    // Verificar que el objeto creado sea de tipo IPCB_Track
    if Track <> nil then
    begin
        // Establecer los puntos de inicio y fin de la pista
        StartPoint := PCBServer.PCBPointFactory.CreatePoint(0, 0);
        EndPoint := PCBServer.PCBPointFactory.CreatePoint(MilsToCoord(10000), MilsToCoord(0)); // Convertir mils a coordenadas

        // Establecer las propiedades de la pista - 修正枚举引用与层栈访问
        Track.SetState_Object(TObjectState.eRouting);
        Track.SetWidthInCoord(MilsToCoord(2000)); // Ancho de la pista en mils
        Track.SetLayer(PCBBoard.LayerStackup.LayerByIndex(3)); // 通过PCBBoard实例访问层栈
        Track.SetStartPoint(StartPoint);
        Track.SetEndPoint(EndPoint);

        // Actualizar la placa
        PCBBoard.GraphicallyInvalidate;

        ShowMessage('Pista de cobre creada exitosamente.');
    end;
    else
    begin
        ShowMessage('Error al crear la pista de cobre o el objeto no es de tipo IPCB_Track.');
    end;
end;

// Llamar a la función principal
CrearPistaDeCobre;

核心修正项

  • 枚举值添加所属类型前缀:
    • eTrackObject → TPrimitiveType.eTrackObject
    • eNoDimension → TDimensionStyle.eNoDimension
    • eRouting → TObjectState.eRouting
  • 层栈访问修正:LayerStackup.LayerByIndex(3) 改为 PCBBoard.LayerStackup.LayerByIndex(3),必须通过当前PCB板实例访问层栈对象

内容的提问来源于stack exchange,提问作者Aaron G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 22:05:57