/*
Copyright (c) 2019 PTC Inc. and/or Its Subsidiary Companies. All Rights Reserved.
*/
#include <ProToolkit.h>
#include <ProDtlsyminst.h>
/*====================================================================*\
FUNCTION : UsrSymInstCreate()
PURPOSE : Create a symbol with no leaders at a specified location
\*====================================================================*/
int UsrSymInstCreate(
ProDrawing drawing,
ProDtlsymdef *definition,
ProVector pos
)
{
ProDtlsyminstdata sdata;
ProDtlattach attach;
ProDtlsyminst syminst;
/*--------------------------------------------------------------------*\
Allocate the symbol instance decription
\*--------------------------------------------------------------------*/
ProDtlsyminstdataAlloc(drawing, &sdata);
/*--------------------------------------------------------------------*\
Set the definition this is an instance of
\*--------------------------------------------------------------------*/
ProDtlsyminstdataDefSet(sdata, definition);
/*--------------------------------------------------------------------*\
Set the attachment type to FREE
\*--------------------------------------------------------------------*/
ProDtlsyminstdataAttachtypeSet(sdata, PROSYMDEFATTACHTYPE_FREE);
/*--------------------------------------------------------------------*\
Allocate a FREE attachment and set the position
\*--------------------------------------------------------------------*/
ProDtlattachAlloc(PRO_DTLATTACHTYPE_FREE, NULL, pos, NULL, &attach);
ProDtlsyminstdataAttachmentSet(sdata, attach);
ProDtlattachFree(attach);
/*--------------------------------------------------------------------*\
Create the symbol and free the description
\*--------------------------------------------------------------------*/
ProDtlsyminstCreate(drawing, sdata, &syminst);
ProDtlsyminstdataFree(sdata);
/*--------------------------------------------------------------------*\
Display the symbol
\*--------------------------------------------------------------------*/
ProDtlsyminstShow(&syminst);
}
int UsrSymInstCreateWrapper ()
{
ProError err;
ProDrawing drawing;
ProMdlType mdl_type;
ProDtlsymdef *symdefs;
int sheet, ns, s;
ProVector pos;
err = ProMdlCurrentGet ((ProMdl*)&drawing);
if (err != PRO_TK_NO_ERROR)
return (err);
err = ProMdlTypeGet ((ProMdl)drawing, &mdl_type);
if (mdl_type != PRO_MDL_DRAWING)
return (PRO_TK_INVALID_TYPE);
ProDrawingDtlsymdefsCollect(drawing, &symdefs);
ProArraySizeGet(symdefs, &ns);
for(s=0;s<ns;s++)
{
pos[0] = 100.0 + s * 100.0;
pos[1] = 400.0;
pos[2] = 0.0;
UsrSymInstCreate(drawing, &symdefs[s], pos);
}
return (PRO_TK_NO_ERROR);
}