Posting to forums is available to community members only. Login or Register |
|
| Author |
Messages |
|
kerchunk Posts: 19 Online:
 |
| 5/05/2008 9:58 PM |
|
Greetings all,
Working on a routine to change all the refdes values on a schematic. Tried the csChangePropValue routine inside stdAccess.il but it turns out that function only works on custom properties because of its copy template -> delete property -> create new property using template and new value method. Turns out Concept won't let you delete a default property like LOCATION.
So, anyone know how to change a default property's value using Concept-SKILL?
TIA,
Chris Walters local Cadence guru ()
|
|
|
|
kerchunk Posts: 19 Online:
 |
| 5/16/2008 3:10 PM |
|
Steve Durrill, creator of stdAccess.il, was kind enough to respond in a different thread:
----------------- I got a fix from the R&D team a few years ago for cnCreateProps() to modify an existing prop object when a dbid is provided.
procedure( chgDefPropVal( h, prop, newVal) let(((tplList nil)) tplList = cons(cnCreatePropTemplate( ?name cnGetPropName(prop), ?value newVal, ?attachXY cnGetPropAttachXY(prop), ?XY cnGetPropXY(prop), ?color cnGetPropColor(prop), ?visibility cnGetPropVisibility(prop), ?justification cnGetPropJustification(prop), ?size cnGetPropSize(prop), ?angle cnGetPropAngle(prop) ), tplList) cnCreateProps(h, tplList) );let );procedure
handle = cnmpsImport() props = cnGetProps(cnGetGroupedObjectSet(cnSendCommand(handle, "FINDLOCATION*\n", ?runOptions csDISP1_RES3))) p = car(props) chgDefPropVal(handle, p, "NEWVALU") ---------------------
So there you have it. cnCreateProps will change the value of an existing default property just fine, but function csChangePropValue within stdAccess.il is flawed in that it cannot handle default properties since it tries to delete->replace the property and Concept won't allow deletion of a default property.
CASE CLOSED
Chris Walters local Cadence guru ()
|
|
|
|
sdurrill Posts: 1 Online:
 |
| 5/16/2008 5:45 PM |
|
I just took a look at the csChangePropValue() routine.. Since cnCreateProps() accepts DBIDs all you have to do to fix the liimitation for default body props is remove this line:
csDeletePropObjects(handle, propList)
The new version is included below.
-Steve
procedure( csChangePropValue(handle, propList, new_value) let((tpl_list) if(propList then ;; Make sure there are properties to change! if(isCallable('cnCreatePropTemplate) then ;;Get the template objects with changes included tpl_list = foreach(mapcan prop propList ncons( csBuildPropTemplate(prop, ?value new_value))) cnCreateProps(handle, tpl_list) else ;; Release is pre-PE13.5 so call the old routine foreach(prop propList csChangeProperty(handle, prop, new_value) );foreach );if );if );let );procedure
|
|
|
|
|
Posting to forums is available to community members only. Login or Register |
|
|
|
ActiveForums 3.6
|
|