cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Did you know you can set a signature that will be added to all your posts? Set it here! X

layers - a popular topic this week.

nrollins
1-Newbie

layers - a popular topic this week.

Greetings,



I have a good reason to finally learn what "Isolate" layers are and how they
work. I am looking for a layers tutorial or overview. I remember the last
time I went to the World Event, 2007, Glen Beer gave a terrific seminar on
this. I left there full of ambition to tame my layers, but never found a
round tuit. Until now.



Glen, are you out there? Anybody else know this crazy layer thing and can
point me to some learnin'?



Thanks,



-Nate

26 REPLIES 26
BenLoosli
23-Emerald II
(To:nrollins)

There is a discussion based around Glenn's 2007 presentation in the MCAD Central forum here. It has a link to the original presentation.

I was going to recommend the same thread. Long, but highly informative.



Glenn's presentation was excellent and drove me to a better
understanding of layers, layer rules and layer states. Here are my top
level takeaways from it, as well as what I've learned since:



* Understand different object types and how they affect visibility
('The Visibility Rule' in Glenn's presentation)
* Understand the 3 different layer visibility states (hidden,
unhidden and isolated) and what trumps what.
* Develop a standard set of rule based layers to put all
'layerable' features on their own layers. This will give you complete
control of what's visible and what's not.
* Pick 2 states to use depending on your visibility preferences.
If you prefer to hide all and only show what's seen, use hidden &
isolated. If you prefer to show all and hide what you'd rather not see,
use hidden and unhidden. This came from my own learning after, not from
Glenn's presentation directly. Once you understand bullets 1 & 2 above,
you'll understand why.



All that said, a word of caution. Many of your other users and clients
will not want to deep dive into layers like this and it may be more than
they want to deal with. If it's just you, dive in, but if collaboration
with other Pro/E users is important, proceed with caution.



Doug Schaefer
--
Doug Schaefer | Experienced Mechanical Design Engineer
LinkedIn

Thanks for the info. I always wondered why I'd want to use isolated,
I'll have to check this out.



And mentioning again, you can use Modelcheck to check/change the layer
visibility preferences to suit your standard.



Christopher F. Gosnell



FPD Company

124 Hidden Valley Road

McMurray, PA 15317

Still here, I read all the messages about layers - but often questions are
being answered before I check in and read up. that's ok by me. 🙂

There is a monster thread "mastering layers" where a copy of the
presentation is saved, along with a huge amount of conversation on the
topic. Feel free to ask your questions there.

Sent out after one of the conferences, I know longer remember which year.

Additionally if you can get a hold of Ted Bradshaw, he had an amazing class at PTC/User Called Master Assembly Design (MAD) and part of it was dealing with layers. Based on an article he wrote for ProFiles magazine that PTC/User used to publish. Other parts of the class covered his "Assembly Maze or Amazing Assemblies?" plus "Options: What To Do With More Than Two" PTC/User presentations and both released as articles also in ProFiles. "Assembly Maze or Amazing Assemblies?", was selected as the best presentation of the conference that year.

[cid:image001.jpg@01CD0668.99D968A0]
The information contained in this electronic mail transmission is intended by Weil-McLain & for the use of the named individual or entity to which it is directed and may contain information that is confidential or privileged. If you have received this electronic mail transmission in error, please notify the sender of the error by reply email so that the sender's address records can be corrected and delete it from your system without copying or forwarding it, including any reply records.

Just got hit with a bunch of notifications about e-mail servers stripping of the zip files on my last e-mail, if you did not get the attachment which was a zipped word document, please contact me and I will send it directly to you after unzipping it or using 7zip to zip the file.

Sorry if you didn't get it the first time.

[cid:image001.jpg@01CD0669.FE7D9C30]
The information contained in this electronic mail transmission is intended by Weil-McLain & for the use of the named individual or entity to which it is directed and may contain information that is confidential or privileged. If you have received this electronic mail transmission in error, please notify the sender of the error by reply email so that the sender's address records can be corrected and delete it from your system without copying or forwarding it, including any reply records.

That Word Doc in the zip file has a time stamp of 2001. Screen shots
from Pro/E Release 2000ii or 2001 I'd guess.



I think there have been many enhancements in layers since then, namely
the introduction of rule based layers which are far more powerful and
flexible than older methods of automating layers. Though much of the
info is still valid, I'd refer first to Glenn's presentation from 2007.



Doug Schaefer
--
Doug Schaefer | Experienced Mechanical Design Engineer
LinkedIn

No doubt that you are right, with that said, many of the observations and standards mentioned would not change dramatically just the way you implement those strategies.

Take it, leave it, it doesn't hurt to have the information available.

Have a good day,

[cid:image001.jpg@01CD066C.5D820890]
The information contained in this electronic mail transmission is intended by Weil-McLain & for the use of the named individual or entity to which it is directed and may contain information that is confidential or privileged. If you have received this electronic mail transmission in error, please notify the sender of the error by reply email so that the sender's address records can be corrected and delete it from your system without copying or forwarding it, including any reply records.

So how do you guys feel about layer rules? Basically you go to a layer and
in its properties you can set up a search rule where it can find certain
items and put them in the layer. That can also be set to "associative"
which really means automatic. If you set it to automatic, then any new
plane goes into the plane folder, and any new feature named for example
"cool_feature_XX" could also be automagically pulled into a specific layer.

My start parts have their layers set to hidden by default. For any older
part or badly imported OTS part I made a map key to create the layers and
set them up with the rules. But then this took a few too many seconds. So I
wrote a Jlink up to not only fix the layers but also create views and check
parameters and remove un used ones. The jlink version runs probably 20 to
50 times faster. Setting rules tends to be the slow part. The views are
created in the blink of an eye and same for parameter checking.

My next step is to make this a batch script and just fix everything once
and for all. I'm tired of opening a part and having to click a thousand
times to get rid of the mess of planes and lines and points and coordinate
systems and notes and surfaces and the kitchen sink. Just tired of it.
Maybe I'll post a write up. I'll post the source code in a few. Its a
modification of some other jlink stuff I found on the internets.

regards,

Alfonso


These are the assembly and part layering mapkeys I use. the previous admin
had some similar ones but I've modified/added rules and set them to
"associative"


!****
!******************
!***Layerp Mapkey to automatically update the part layers
mapkey layerp @MAPKEY_LABELlayer-part;~ Command `ProCmdMdlTreeShowLyrs` 1 ;\
mapkey(continued) ~ Close `main_dlg_cur` `PHTLeft.ShowCB`;!REMOVE AND ADD
LAYERS;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:10_ALL_AXIS`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:10_ALL_AXIS`;\
mapkey(continued) ~ Command `ProCmdLayer_DelLay` ;~ FocusIn `UI Message
Dialog` `yes`;\
mapkey(continued) ~ Activate `UI Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:10_ALL_AXIS`;\
mapkey(continued) ~ Command `ProCmdLayer_NewLay` ;~ Input `newlayerprops`
`LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput` `10_ALL_AXIS`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1 \
mapkey(continued) `node0:20_ALL_DATUM_PLANES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree` \
mapkey(continued) `node0:20_ALL_DATUM_PLANES`;~ Command
`ProCmdLayer_DelLay` ;\
mapkey(continued) ~ FocusIn `UI Message Dialog` `yes`;~ Activate `UI
Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`;\
mapkey(continued) `node0:20_ALL_DATUM_PLANES`;~ Command
`ProCmdLayer_NewLay` ;\
mapkey(continued) ~ Input `newlayerprops` `LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput`
`20_ALL_DATUM_PLANES`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:30_ALL_CSYS`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:30_ALL_CSYS`;\
mapkey(continued) ~ Command `ProCmdLayer_DelLay` ;~ FocusIn `UI Message
Dialog` `yes`;\
mapkey(continued) ~ Activate `UI Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:30_ALL_CSYS`;\
mapkey(continued) ~ Command `ProCmdLayer_NewLay` ;~ Input `newlayerprops`
`LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput` `30_ALL_CSYS`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:40_CURVES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:40_CURVES`;\
mapkey(continued) ~ Command `ProCmdLayer_DelLay` ;~ FocusIn `UI Message
Dialog` `yes`;\
mapkey(continued) ~ Activate `UI Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:40_CURVES`;\
mapkey(continued) ~ Command `ProCmdLayer_NewLay` ;~ Input `newlayerprops`
`LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput` `40_CURVES`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:50_THREADS`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:50_THREADS`;\
mapkey(continued) ~ Command `ProCmdLayer_DelLay` ;~ FocusIn `UI Message
Dialog` `yes`;\
mapkey(continued) ~ Activate `UI Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:50_THREADS`;\
mapkey(continued) ~ Command `ProCmdLayer_NewLay` ;~ Input `newlayerprops`
`LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput` `50_THREADS`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:60_COSMETIC`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:60_COSMETIC`;\
mapkey(continued) ~ Command `ProCmdLayer_DelLay` ;~ FocusIn `UI Message
Dialog` `yes`;\
mapkey(continued) ~ Activate `UI Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:60_COSMETIC`;\
mapkey(continued) ~ Command `ProCmdLayer_NewLay` ;~ Input `newlayerprops`
`LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput` `60_COSMETIC`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:70_SURFACES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:70_SURFACES`;\
mapkey(continued) ~ Command `ProCmdLayer_DelLay` ;~ FocusIn `UI Message
Dialog` `yes`;\
mapkey(continued) ~ Activate `UI Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:70_SURFACES`;\
mapkey(continued) ~ Command `ProCmdLayer_NewLay` ;~ Input `newlayerprops`
`LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput` `70_SURFACES`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:80_POINTS`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:80_POINTS`;\
mapkey(continued) ~ Command `ProCmdLayer_DelLay` ;~ FocusIn `UI Message
Dialog` `yes`;\
mapkey(continued) ~ Activate `UI Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:80_POINTS`;\
mapkey(continued) ~ Command `ProCmdLayer_NewLay` ;~ Input `newlayerprops`
`LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput` `80_POINTS`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:90_NOTES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:90_NOTES`;\
mapkey(continued) ~ Command `ProCmdLayer_DelLay` ;~ FocusIn `UI Message
Dialog` `yes`;\
mapkey(continued) ~ Activate `UI Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:90_NOTES`;\
mapkey(continued) ~ Command `ProCmdLayer_NewLay` ;~ Input `newlayerprops`
`LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput` `90_NOTES`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ !OPEN THE PROPERTIES FILE TO BLANK LAYERS AND SET IDS;\
mapkey(continued) ~ Select `main_dlg_cur`
`PHTLeft.PHLayerUI.LayerSettingsBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `LayerSettingsFileCasc`;\
mapkey(continued) ~ Close `main_dlg_cur`
`PHTLeft.PHLayerUI.LayerSettingsBtn`;\
mapkey(continued) ~ Close `main_dlg_cur` `LayerSettingsFileCasc`;\
mapkey(continued) ~ Activate `main_dlg_cur` `LayerOpenSetup`;\
mapkey(continued) ~ Trail `UI Desktop` `UI Desktop` `DLG_PREVIEW_POST`
`file_open`;\
mapkey(continued) ~ Close `main_dlg_cur`
`PHTLeft.PHLayerUI.LayerSettingsBtn`;\
mapkey(continued) ~ Activate `file_open` `opt_EMBED_BROWSER_TB_SAB_LAYOUT` \
mapkey(continued) `C:\\layer_config\\part.pro`;\
mapkey(continued) ~ Activate `file_open` `Ph_list.Filelist`1 `quik_part.pro
`;\
mapkey(continued) ~ Command `ProCmdViewSaveLayStat`;~ !ASSIGN STUFF TO
LAYERS HERE;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:10_ALL_AXIS`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:10_ALL_AXIS`;\
mapkey(continued) ~ Command `ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Open `selspecdlg0` `SelOptionRadio`;~ Close
`selspecdlg0` `SelOptionRadio`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Axis`;\
mapkey(continued) ~ Open `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Close `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Axis`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Misc`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `All`;\
mapkey(continued) ~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1 \
mapkey(continued) `node0:20_ALL_DATUM_PLANES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree` \
mapkey(continued) `node0:20_ALL_DATUM_PLANES`;~ Command
`ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Open `selspecdlg0` `SelOptionRadio`;~ Close
`selspecdlg0` `SelOptionRadio`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Datum`;\
mapkey(continued) ~ Open `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Close `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Datum`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Misc`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `All`;\
mapkey(continued) ~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:30_ALL_CSYS`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:30_ALL_CSYS`;\
mapkey(continued) ~ Command `ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Open `selspecdlg0` `SelOptionRadio`;~ Close
`selspecdlg0` `SelOptionRadio`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Coord Sys`;\
mapkey(continued) ~ Open `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Close `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Coord Sys`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Misc`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `All`;\
mapkey(continued) ~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:40_CURVES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:40_CURVES`;\
mapkey(continued) ~ Command `ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Open `selspecdlg0` `SelOptionRadio`;~ Close
`selspecdlg0` `SelOptionRadio`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Curve
Feature`;\
mapkey(continued) ~ Open `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Close `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Curve
Feature`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Misc`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `All`;\
mapkey(continued) ~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Open `selspecdlg0` `SelOptionRadio`;~ Close
`selspecdlg0` `SelOptionRadio`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Feature`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Attributes`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `Type`;\
mapkey(continued) ~ Open `selspecdlg0`
`ExtRulesLayout.ExtTyperuleLayout.TyperuleCatsList`;\
mapkey(continued) ~ Close `selspecdlg0`
`ExtRulesLayout.ExtTyperuleLayout.TyperuleCatsList`;\
mapkey(continued) ~ Open `selspecdlg0`
`ExtRulesLayout.ExtTyperuleLayout.TyperuleTypesList`;\
mapkey(continued) ~ Close `selspecdlg0`
`ExtRulesLayout.ExtTyperuleLayout.TyperuleTypesList`;\
mapkey(continued) ~ Select `selspecdlg0`
`ExtRulesLayout.ExtTyperuleLayout.TyperuleTypesList`1 \
mapkey(continued) ` Pipe#1, 945`;~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Arm `selspecdlg0` `CondBuildTable`2 `0` `oper`;\
mapkey(continued) ~ Select `selspecdlg0` `CondBuildTable`2 `0` `oper`;\
mapkey(continued) ~ Open `selspecdlg0` `CondBuildTable_INPUT`;\
mapkey(continued) ~ Close `selspecdlg0` `CondBuildTable_INPUT`;\
mapkey(continued) ~ Select `selspecdlg0` `CondBuildTable_INPUT`1 `and`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;\
mapkey(continued) ~ !ASSIGN STUFF TO LAYERS HERE;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:50_THREADS`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:50_THREADS`;\
mapkey(continued) ~ Command `ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Feature`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Feature`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Attributes`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `Type`;\
mapkey(continued) ~ Select `selspecdlg0`
`ExtRulesLayout.ExtTyperuleLayout.TyperuleComp`1 ` \
mapkey(continued) == `;\
mapkey(continued) ~ Select `selspecdlg0`
`ExtRulesLayout.ExtTyperuleLayout.TyperuleCatsList`1 \
mapkey(continued) `Misc`;\
mapkey(continued) ~ Select `selspecdlg0`
`ExtRulesLayout.ExtTyperuleLayout.TyperuleTypesList`1 \
mapkey(continued) `is thread#4, 93`;~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;\
mapkey(continued) ~ !ASSIGN STUFF TO LAYERS HERE;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:60_COSMETIC`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:60_COSMETIC`;\
mapkey(continued) ~ Command `ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Feature`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Feature`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Attributes`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `Type`;\
mapkey(continued) ~ Select `selspecdlg0`
`ExtRulesLayout.ExtTyperuleLayout.TyperuleComp`1 ` \
mapkey(continued) == `;\
mapkey(continued) ~ Select `selspecdlg0`
`ExtRulesLayout.ExtTyperuleLayout.TyperuleCatsList`1 \
mapkey(continued) `All`;\
mapkey(continued) ~ Select `selspecdlg0`
`ExtRulesLayout.ExtTyperuleLayout.TyperuleTypesList`1 \
mapkey(continued) `Analysis feature#1, 1085`;~ Activate `selspecdlg0`
`AddRuleBtn`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;\
mapkey(continued) ~ !ASSIGN STUFF TO LAYERS HERE;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:70_SURFACES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:70_SURFACES`;\
mapkey(continued) ~ Command `ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Open `selspecdlg0` `SelOptionRadio`;~ Close
`selspecdlg0` `SelOptionRadio`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Surface`;\
mapkey(continued) ~ Open `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Close `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Surface`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Misc`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `All`;\
mapkey(continued) ~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:80_POINTS`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:80_POINTS`;\
mapkey(continued) ~ Command `ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Open `selspecdlg0` `SelOptionRadio`;~ Close
`selspecdlg0` `SelOptionRadio`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Point`;\
mapkey(continued) ~ Open `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Close `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Point`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Misc`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `All`;\
mapkey(continued) ~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:90_NOTES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:90_NOTES`;\
mapkey(continued) ~ Command `ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Open `selspecdlg0` `SelOptionRadio`;~ Close
`selspecdlg0` `SelOptionRadio`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Note`;\
mapkey(continued) ~ Open `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Close `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Note`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Misc`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `All`;\
mapkey(continued) ~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;
!
mapkey layera @MAPKEY_LABELlayer-assy;~ Command `ProCmdMdlTreeShowLyrs` 1 ;\
mapkey(continued) ~ Close `main_dlg_cur` `PHTLeft.ShowCB`;\
mapkey(continued) ~ Select `main_dlg_cur`
`PHTLeft.PHLayerUI.LayerSettingsBtn`;\
mapkey(continued) ~ Close `main_dlg_cur`
`PHTLeft.PHLayerUI.LayerSettingsBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `rad_list_layers_for`1
`act_obj_and_lays`;\
mapkey(continued) ~ Close `main_dlg_cur`
`PHTLeft.PHLayerUI.LayerSettingsBtn`;\
mapkey(continued) !REMOVE AND ADD LAYERS;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:Z-10_AXIS`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:Z-10_AXIS`;\
mapkey(continued) ~ Command `ProCmdLayer_DelLay` ;~ FocusIn `UI Message
Dialog` `yes`;\
mapkey(continued) ~ Activate `UI Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:Z-10_AXIS`;\
mapkey(continued) ~ Command `ProCmdLayer_NewLay` ;~ Input `newlayerprops`
`LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput` `Z-10_AXIS`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1 \
mapkey(continued) `node0:Z-20_DATUM_PLANES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree` \
mapkey(continued) `node0:Z-20_DATUM_PLANES`;~ Command `ProCmdLayer_DelLay`
;\
mapkey(continued) ~ FocusIn `UI Message Dialog` `yes`;~ Activate `UI
Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`;\
mapkey(continued) `node0:Z-20_DATUM_PLANES`;~ Command `ProCmdLayer_NewLay`
;\
mapkey(continued) ~ Input `newlayerprops` `LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput`
`Z-20_DATUM_PLANES`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:Z-30_CSYS`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:Z-30_CSYS`;\
mapkey(continued) ~ Command `ProCmdLayer_DelLay` ;~ FocusIn `UI Message
Dialog` `yes`;\
mapkey(continued) ~ Activate `UI Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:Z-30_CSYS`;\
mapkey(continued) ~ Command `ProCmdLayer_NewLay` ;~ Input `newlayerprops`
`LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput` `Z-30_CSYS`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:Z-40_CURVES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:Z-40_CURVES`;\
mapkey(continued) ~ Command `ProCmdLayer_DelLay` ;~ FocusIn `UI Message
Dialog` `yes`;\
mapkey(continued) ~ Activate `UI Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:Z-40_CURVES`;\
mapkey(continued) ~ Command `ProCmdLayer_NewLay` ;~ Input `newlayerprops`
`LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput` `Z-40_CURVES`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1 \
mapkey(continued) `node0:Z-99_OTHER_FEATURES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree` \
mapkey(continued) `node0:Z-99_OTHER_FEATURES`;~ Command
`ProCmdLayer_DelLay` ;\
mapkey(continued) ~ FocusIn `UI Message Dialog` `yes`;~ Activate `UI
Message Dialog` `yes`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
\
mapkey(continued) `node0:Z-99_OTHER_FEATURES`;~ Command
`ProCmdLayer_NewLay` ;\
mapkey(continued) ~ Input `newlayerprops` `LayerNameInput` `Z`;\
mapkey(continued) ~ Update `newlayerprops` `LayerNameInput`
`Z-99_OTHER_FEATURES`;\
mapkey(continued) ~ Activate `newlayerprops` `OkBtn`;\
mapkey(continued) ~ !OPEN THE PROPERTIES FILE TO BLANK LAYERS AND SET IDS;\
mapkey(continued) ~ Select `main_dlg_cur`
`PHTLeft.PHLayerUI.LayerSettingsBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `LayerSettingsFileCasc`;\
mapkey(continued) ~ Close `main_dlg_cur`
`PHTLeft.PHLayerUI.LayerSettingsBtn`;\
mapkey(continued) ~ Close `main_dlg_cur` `LayerSettingsFileCasc`;\
mapkey(continued) ~ Activate `main_dlg_cur` `LayerOpenSetup`;\
mapkey(continued) ~ Trail `UI Desktop` `UI Desktop` `DLG_PREVIEW_POST`
`file_open`;\
mapkey(continued) ~ Close `main_dlg_cur`
`PHTLeft.PHLayerUI.LayerSettingsBtn`;\
mapkey(continued) ~ Activate `file_open` `opt_EMBED_BROWSER_TB_SAB_LAYOUT` \
mapkey(continued) `C:\\layer_config\\assy.pro`;\
mapkey(continued) ~ Activate `file_open` `Ph_list.Filelist`1 `quik_assy.pro
`;\
mapkey(continued) ~ Command `ProCmdViewSaveLayStat`;~ !ASSIGN STUFF TO
LAYERS HERE;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:Z-10_AXIS`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:Z-10_AXIS`;\
mapkey(continued) ~ Command `ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Open `selspecdlg0` `SelOptionRadio`;~ Close
`selspecdlg0` `SelOptionRadio`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Axis`;\
mapkey(continued) ~ Open `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Close `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Axis`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Misc`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `All`;\
mapkey(continued) ~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1 \
mapkey(continued) `node0:Z-20_DATUM_PLANES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree` \
mapkey(continued) `node0:Z-20_DATUM_PLANES`;~ Command
`ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Open `selspecdlg0` `SelOptionRadio`;~ Close
`selspecdlg0` `SelOptionRadio`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Datum`;\
mapkey(continued) ~ Open `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Close `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Datum`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Misc`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `All`;\
mapkey(continued) ~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:Z-30_CSYS`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:Z-30_CSYS`;\
mapkey(continued) ~ Command `ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Open `selspecdlg0` `SelOptionRadio`;~ Close
`selspecdlg0` `SelOptionRadio`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Coord Sys`;\
mapkey(continued) ~ Open `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Close `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Coord Sys`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Misc`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `All`;\
mapkey(continued) ~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1
`node0:Z-40_CURVES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`
`node0:Z-40_CURVES`;\
mapkey(continued) ~ Command `ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Open `selspecdlg0` `SelOptionRadio`;~ Close
`selspecdlg0` `SelOptionRadio`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Curve
Feature`;\
mapkey(continued) ~ Open `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Close `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Curve
Feature`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Misc`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `All`;\
mapkey(continued) ~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;\
mapkey(continued) ~ Select `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree`1 \
mapkey(continued) `node0:Z-99_OTHER_FEATURES`;\
mapkey(continued) ~ RButtonArm `main_dlg_cur` `PHTLeft.PHLayerUI.AssyTree` \
mapkey(continued) `node0:Z-99_OTHER_FEATURES`;~ Command
`ProCmdLayer_LayProps` ;\
mapkey(continued) ~ Select `newlayerprops` `PropTab`1
`RulesDefsettingsLay`;\
mapkey(continued) ~ Activate `newlayerprops` `EditRulesBtn`;\
mapkey(continued) ~ Open `selspecdlg0` `SelOptionRadio`;~ Close
`selspecdlg0` `SelOptionRadio`;\
mapkey(continued) ~ Select `selspecdlg0` `SelOptionRadio`1 `Surface`;\
mapkey(continued) ~ Open `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Close `selspecdlg0` `LookByOptionMenu`;\
mapkey(continued) ~ Select `selspecdlg0` `LookByOptionMenu`1 `Surface`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTab`1 `Misc`;\
mapkey(continued) ~ Select `selspecdlg0` `RuleTypes`1 `All`;\
mapkey(continued) ~ Activate `selspecdlg0` `AddRuleBtn`;\
mapkey(continued) ~ Activate `selspecdlg0` `SelectButton`;\
mapkey(continued) ~ Select `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;\
mapkey(continued) ~ Activate `newlayerprops` `AssocRulesChk`1 ;\
mapkey(continued) ~ Close `newlayerprops` `RuleOptionsCasc`;~ Activate
`newlayerprops` `OkBtn`;

Damn double post.. sorry.

ModelCHECK does this in a couple clicks. And without the need to bloat up a config.pro file with an enormous mapkey.


The only thing it doesn't do is add in layer rules. But, running model check will place most items on their correct layers, so that becomes nearly a moot point.


It also does parameters, checks if correct views exist, relations, formats, dtl files, tolerance type, accuracy, units, early rounds/chamfers, edge references, unused planes, materials, and so forth.




In Reply to alfonso medina:


So how do you guys feel about layer rules? Basically you go to a layer and
in its properties you can set up a search rule where it can find certain
items and put them in the layer. That can also be set to "associative"
which really means automatic. If you set it to automatic, then any new
plane goes into the plane folder, and any new feature named for example
"cool_feature_XX" could also be automagically pulled into a specific layer.

My start parts have their layers set to hidden by default. For any older
part or badly imported OTS part I made a map key to create the layers and
set them up with the rules. But then this took a few too many seconds. So I
wrote a Jlink up to not only fix the layers but also create views and check
parameters and remove un used ones. The jlink version runs probably 20 to
50 times faster. Setting rules tends to be the slow part. The views are
created in the blink of an eye and same for parameter checking.

My next step is to make this a batch script and just fix everything once
and for all. I'm tired of opening a part and having to click a thousand
times to get rid of the mess of planes and lines and points and coordinate
systems and notes and surfaces and the kitchen sink. Just tired of it.
Maybe I'll post a write up. I'll post the source code in a few. Its a
modification of some other jlink stuff I found on the internets.

regards,

Alfonso


I'm still using the layera and layerp because setting those to
"associative" seems to be missing in Jlink but here is my code that uses
these mapkeys and also creates views and checks parameters. parameter
checking comprises of removing crap parameters so use with caution. You can
make that part smarter:


// Copyright 2012, Alfonso Medina
// This program adds several views to a part
package WSFIX;
// imports required
import com.ptc.cipjava.*;
import com.ptc.pfc.pfcBase.*;
import com.ptc.pfc.pfcCommand.*;
import com.ptc.pfc.pfcGlobal.*;
import com.ptc.pfc.pfcLayer.Layer;
import com.ptc.pfc.pfcLayer.Layers;
import com.ptc.pfc.pfcModel.*;
import com.ptc.pfc.pfcModel2D.*;
import com.ptc.pfc.pfcModelItem.*;
import com.ptc.pfc.pfcTable.*;
import com.ptc.pfc.pfcSession.BaseSession.*;
import com.ptc.pfc.pfcSelect.*;
import com.ptc.pfc.pfcSession.*;
import com.ptc.pfc.pfcView.*;
import com.ptc.pfc.pfcWindow.pfcWindow;
import com.ptc.pfc.pfcWindow.Window;
import java.io.*;
import java.util.Arrays;
import java.util.Hashtable;
import java.util.List;


public class View_Fix {
//String install_directory = System.getenv("INSTALL_DIRECTORY");
static View_Fix App = null;
String programName = null;
Session session = null;
FileWriter log = null;
FileWriter TabBOM = null;
String msgFile = "C:/apps/ptc/WSFIX/text/VIEWS_FIXED.txt";
String newline = null;
//Synch.TextEr.Area(args);
// constructor
//
public View_Fix () {
programName = this.getClass().getName();
try {
log = new FileWriter("C:/apps/ptc/ViewFix.log");
newline = System.getProperty("line.separator");
}
catch (Exception e) {
// couldn't create log file, ignore
}
}



// Display message in Pro/Engineer
//
public void DisplayMessage ( String mesg ) throws Exception {
stringseq seq = stringseq.create();
seq.set(0, mesg);
session.UIDisplayMessage(msgFile, "WSFX %s", seq);
seq.clear();
writeLog(mesg);
}

// Write text to log file
//
public void writeLog ( String mesg ) {
try {
if (log == null) { return; }
log.write(mesg + newline);
log.flush();
}
catch (Exception e) {
// ignore
}
}
// Write text to log file
//
public void tableBOM ( String mesg ) {
try {
if (TabBOM == null) { return; }
TabBOM.write(mesg + newline);
TabBOM.flush();
}
catch (Exception e) {
// ignore
}
}



// Close all log file
//
public void closeBOM () {
try {
if (TabBOM == null) { return; }
TabBOM.close();
}
catch (Exception e) {
// ignore
}
}
// Close all log file
//
public void closeLog () {
try {
if (log == null) { return; }
log.close();
}
catch (Exception e) {
// ignore
}
}

// Called by Pro/Engineer when starting the application
//
public static void startApp () {
try {
App = new View_Fix();
App.startupApplication();
}
catch (Exception e) {
App.writeLog("Problem running startupApplication method" +
e.toString());
return;
}
}

// Called by Pro/Engineer when stopping the application
//
public static void stopApp () {
try {
App.shutdownApplication();
}
catch (Exception e) {
App.writeLog("Problem running shutdownApplication method" +
e.toString());
return;
}
}

// Perform some steps when shutting down the application
//
public void shutdownApplication () throws Exception {
writeLog("Application " + programName + " stopped");
closeLog();
}

// Perform some steps when starting the application
//
public void startupApplication () throws Exception {

try {
writeLog("Application " + programName + " started.");
session = pfcGlobal.GetProESession();
}
catch (jxthrowable x) {
writeLog("ERROR: Problem getting session object.");
return;
}

UICommand BTNtablefix = null;

try {
// Define a UI command
BTNtablefix = session.UICreateCommand(
"WSFX Btn2 Cmd", new WSFX_Btn1_CmdListener()
);
}
catch (jxthrowable x) {
writeLog("ERROR: Problem creating uicmd.");
return;
}

try {
// Add UI command to 'Tools' menu
session.UIAddButton(BTNtablefix, "Utilities", null,"WSFX Btn2
Label", "WSFX Btn2 Help","msg_wsfix.txt");
}
catch (jxthrowable x) {
writeLog("ERROR: Problem creating menu: " + x.toString());
return;
}

DisplayMessage(programName + " application started.");

}

// Callback for the 'Tools' menu button
//
public void Btn1_callback ( ) throws Exception {
TabBOM = new FileWriter("C:/apps/ptc/WSFIX/FIXED.txt");
String mesg = null;


Model model = session.GetCurrentModel();
Model currentModel;
Tables tables;
int index = -1, qty =-1, part=-1, desc=-1,tmp=-1,len=-1;
stringseq seq = stringseq.create();
if (model == null) {
mesg = "Hello!";
}
else {
mesg = "Hello! The model is: " + model.GetFileName();
}

DisplayMessage(mesg);

currentModel = (Model) model;
currentModel.RetrieveView("FRONT");
currentModel.SaveView("FRONT");
View view = currentModel.GetCurrentView();
view.SetTransform(normalize(view.GetTransform()));
view.Rotate(CoordAxis.COORD_AXIS_Y, 90.0);
currentModel.SaveView("LEFT");
currentModel.SaveView("LSIDE");
view.Rotate(CoordAxis.COORD_AXIS_Y, 90.0);
currentModel.SaveView("REAR");
currentModel.SaveView("BACK");
view.Rotate(CoordAxis.COORD_AXIS_Y, 90.0);
currentModel.SaveView("RIGHT");
currentModel.RetrieveView("FRONT");
view.Rotate(CoordAxis.COORD_AXIS_X, 90.0);
currentModel.SaveView("TOP");
view.Rotate(CoordAxis.COORD_AXIS_X, 180.0);
currentModel.SaveView("BOTTOM");
currentModel.RetrieveView("FRONT");
view.Rotate(CoordAxis.COORD_AXIS_Z, 180.0);
view.Rotate(CoordAxis.COORD_AXIS_Y, 45.0);
view.Rotate(CoordAxis.COORD_AXIS_X, 35.0);
currentModel.SaveView("FRONT_RIGHT_BOTTOM_ISO");
currentModel.RetrieveView("FRONT");
view.Rotate(CoordAxis.COORD_AXIS_Z, 180.0);
view.Rotate(CoordAxis.COORD_AXIS_Y, -45.0);
view.Rotate(CoordAxis.COORD_AXIS_X, 35.0);
currentModel.SaveView("FRONT_LEFT_BOTTOM_ISO");
currentModel.RetrieveView("FRONT");
view.Rotate(CoordAxis.COORD_AXIS_Y, -45.0);
view.Rotate(CoordAxis.COORD_AXIS_X, 35.0);
currentModel.SaveView("FRONT_RIGHT_ISO");
currentModel.RetrieveView("FRONT");
view.Rotate(CoordAxis.COORD_AXIS_Y, 45.0);
view.Rotate(CoordAxis.COORD_AXIS_X, 35.0);
currentModel.SaveView("FRONT_LEFT_ISO");
currentModel.RetrieveView("REAR");
view.Rotate(CoordAxis.COORD_AXIS_Z, 180.0);
view.Rotate(CoordAxis.COORD_AXIS_Y, 45.0);
view.Rotate(CoordAxis.COORD_AXIS_X, 35.0);
currentModel.SaveView("REAR_RIGHT_BOTTOM_ISO");
currentModel.RetrieveView("REAR");
view.Rotate(CoordAxis.COORD_AXIS_Z, 180.0);
view.Rotate(CoordAxis.COORD_AXIS_Y, -45.0);
view.Rotate(CoordAxis.COORD_AXIS_X, 35.0);
currentModel.SaveView("REAR_LEFT_BOTTOM_ISO");
currentModel.RetrieveView("REAR");
view.Rotate(CoordAxis.COORD_AXIS_Y, -45.0);
view.Rotate(CoordAxis.COORD_AXIS_X, 35.0);
currentModel.SaveView("REAR_RIGHT_ISO");
currentModel.RetrieveView("REAR");
view.Rotate(CoordAxis.COORD_AXIS_Y, 45.0);
view.Rotate(CoordAxis.COORD_AXIS_X, 35.0);
currentModel.SaveView("REAR_LEFT_ISO");
currentModel.RetrieveView("FRONT");
session.GetModelWindow (currentModel).Repaint();

ModelItems items;
//Layer layer;
items = currentModel.ListItems(ModelItemType.ITEM_LAYER);
for(int i = 0; i < items.getarraysize(); i++) {
Layer layer = (Layer)items.get(i);
//items.get(i).GetName();
mesg = "layers to remove?" + layer.GetName();
//layer.xdelete();
DisplayMessage(mesg);
layer.Delete();
}

if(model.GetType().getValue() == ModelType._MDL_PART)
{
session.RunMacro("%layerp");
}
if(model.GetType().getValue() == ModelType._MDL_ASSEMBLY)
{
session.RunMacro("%layera");
}
//ModelItem params;
List<string> ParaRemove= Arrays.asList("DASH_NO", "MODELED_BY",
"MODELED_BY_DATE", "DWG_REV", "TITL3", "DESCRIPTION",
"FAMILY_TABLE_GENERIC", "PTNUM", "PTNAME", "VENDOR", "MFG", "MATL",
"USED_ON", "WEIGHT", "MATERIAL", "MATL_LIB", "THRD_SIZE_1", "NEXT_ASSY",
"BOM_DESC", "REV", "DESR", "ISSUED", "ISSUED_DATE", "PROD1", "NX1",
"PROD2", "NX2");
for(int i = 0; i < ParaRemove.size(); i++) {
try{
Parameter params = currentModel.GetParam(ParaRemove.get(i));
params.Delete();
}
catch (Exception e) {
App.writeLog("Problem removing item" +ParaRemove.get(i)+ ". "
+ e.toString());
//continue;

}
}
List<string> ParaDesignate= Arrays.asList("DESC",
"CHKR","CHK_DATE","DRAWN_BY","DRAWN_BY_DATE","RE","RE_DATE","TITLE1","TITLE2");
for(int i = 0; i < ParaDesignate.size(); i++) {
try{
Parameter params = currentModel.GetParam(ParaDesignate.get(i));
params.SetIsDesignated(true);
}
catch (Exception e) {
App.writeLog("Problem designating item"
+ParaDesignate.get(i)+ ". " + e.toString());
//continue;

}
}
List<string> ParaUndesignate= Arrays.asList("PTC_MATERIAL_NAME");
for(int i = 0; i < ParaUndesignate.size(); i++) {
try{
Parameter params = currentModel.GetParam(ParaUndesignate.get(i));
params.SetIsDesignated(false);
}
catch (Exception e) {
App.writeLog("Problem undesignating item"
+ParaUndesignate.get(i)+ ". " + e.toString());
//continue;

}
}
/*this is to remove unwanted parameters and designate wanted parameters
List<string> ParaDesignate= Arrays.asList("DESC",
"CHKR","CHK_DATE","DRAWN_BY","DRAWN_BY_DATE","RE","RE_DATE","TITLE1","TITLE2");


if(ParaDesignate.contains("the string you want to find"))
{
}
else{

}
String layers[] = <the list=" of=" layer=" names=">
For (int i=0, i<layers.length, i++)<br="/>
{
if (!layers[i].equals(“Hidden Items”)
{<delete the=" layer=">
}
}
ModelItems lays = mdl.ListItems(ModelItemType.ITEM_LAYER);
for (int j = 0; j < lays.getarraysize(); j++) {
System.out.println("delete " + ((Layer)lays.get(j)).GetName());
((Layer) lays.get(j)).Delete();
}*/
String[] args = null;
closeBOM();
}


// Inner class for UI Command Listener
//
public class WSFX_Btn1_CmdListener extends
DefaultUICommandActionListener {

// Handler for button push
//
public void OnCommand () {
try {
Btn1_callback();
}
catch (Exception e) {
writeLog("Exception thrown by Btn1_callback method: " +
e.toString());
}
}
}

/**
* Normalizes the transformation matrix. This is necesary to get
correct
* transformations
*
* @param t
* is a 3D transformation to normalize.
* @return the normalized 3D transform.
*/
private Transform3D normalize(Transform3D t)
{
try
{
Vector3D v = t.GetXAxis();
Matrix3D m3d = t.GetMatrix();
double scale = 1.0 / Math.sqrt(v.get(0) * v.get(0)
+ v.get(1) * v.get(1) + v.get(2) * v.get(2));
for (int i = 0; i < 3; i++)
{
m3d.set(3, i, 0.0);
for (int j = 0; j < 3; j++)
m3d.set(i, j, m3d.get(i, j) *
scale);
}
t.SetMatrix(m3d);
}
catch (Exception ex)
{
}
return t;
}

}

We have Model check running to keep our quality up. However I found the
checking to be a little S%#$@y and regardless of warning or errors people
will not fix them unless I or another admin is behind them the whole way.
But model check is not too bad. we check for layers, parameters, units,
views out of place, formats yeah the whole shavang. its just not good
enough. I already investigated into automating some tasks and its possible.
But jlink and tool kit are so much better and versatile.

regards,

Alfonso



Layer rules are immensely powerful. You can fine tune what goes on
layers with rules. For example, my axis layer rules look for a feature
that has an axis that is not a mirror, mirrored merge, copy geom or
external copy geom. This creates a pretty clean set of part features
that contain an axis.



Another nice feature of layer rules is they can be extended from an
assembly down through the entire tree to all the components below. So,
you can add those axis rules above at the top level assy and then extend
them into hundreds of part below with a couple of clicks (select the
layer, click the 'layer' menu then 'extend rules'). This means that I
was able to create a single mapkey (actually several nested mapkeys)
that strip all layers from an assembly and all parts, create the top
level rule based layers and extend them to all parts. Now all layerable
items are on layers and I can add more layers to control smaller subsets
of geometry.



While that could be done with model check, layer rules update the layer
contents automatically as you work. That means the benefit of having
items on layers and being able to control what's visible is available to
you as you work and add features.



I learned all of this from Glenn Beer's 2007 presentation. I can't
stress enough how valuable it is, as Ben pointed out earlier, you can
find it and an info rich discussion here:



--
Doug Schaefer | Experienced Mechanical Design Engineer
LinkedIn

I did a presentation on rules (mostly for layers) at the 2009 conference if anybody is interested it is attached.


Mark

Some folks are having issues with link, not sure why. It is at bottom of email under "Attachment Links":


http://portal.ptcuser.org/p/fo/do/download=1&fid=14233

YIKES!



This does sound powerful, but ugly in a PDMLink environment...



Intentionally touching checked out objects is fine- it's the unwanted
touches en mass as these rules are extended that may get messy...



Eric Slotty

- <">mailto:->

414-362-2552


Actually as with anything in windchill you gotta keep track of what you
work on. This is more of a librarian script rather than an every day user
script.

I tell my users to "only modify what is on the CO" and to set everything
except for those items int he CO for read-only. That way they can modify
all they want, it will always give an error, not save or just warn them
that they are changing something that they should not change.

In windchill I think there is also such a thing. We use intralink at the
moment. the old one 3.4. In windchill/pdmlink/intralink its a little
different. I used rev 8, they probably made some upgrades through the past
two years.

regards,
Alfonso

On Tue, Mar 20, 2012 at 10:23 AM, Slotty, Eric (GE Healthcare) <
-> wrote:

> YIKES!****
>
> ** **
>
> This does sound powerful, but ugly in a PDMLink environment… ****
>
> ** **
>
> Intentionally touching checked out objects is fine- it's the unwanted
> touches en mass as these rules are extended that may get messy… ****
>
> ** **
>
> *Eric Slotty*
>
> -*
>
> *414-362-2552*
>
> ** **
>
> *From:* Doug Schaefer [
> which really means automatic. If you set it to automatic, then any new
> plane goes into the plane folder, and any new feature named for example
> "cool_feature_XX" could also be automagically pulled into a specific layer.
> ****
>
> ** **
>
> My start parts have their layers set to hidden by default. Fo...

























































I created the attached diagrams** as an aid to map out where everything
was. From Mark Ganzer's (Thanks) presentation, I now know what the
'extend layers' item is for.

The layers I usually use are mostly functional, not by geometry type.
Why bother automatically putting curves on a curves layer? When I want
to do some such I can just search and get them.

Instead, I have layers, e.g. an always hidden set_datums layer, ruled to
automatically put shown datums (PTC, is anyone in charge of
consistency?) and another rule that removes shown datums from the datums
layer. Then there is Construction, for geometry used in constructing
other geometry - also usually hidden and not automatic.
Drawing_enhancement for curves and such that make the drawing easier to
deal with (intersection extensions where dimensions originate.

That sort of thing - to record, for the most part, what the items are
for, not the geometry type of the geometry that is on them.

I would like to have the drawing layers really work the right way. If I
have an assembly drawing and I turn off the Construction layer on the
drawing, add a new component to the assembly, and come back to the
drawing, the Construction layer is off for all components except the one
just added. Likewise, if someone decides to set a datum, it also filters
up and has to be turned off, drawing by drawing, level by level. Am I
somehow missing a setting that will continuously update the drawing with
the drawing layer selections?

I've also noticed, but not much used, the ability for assemblies to
contain layers and visibility settings for geometry that is not part of
the assembly - so that I could have an assembly shut off all the
component shown datums, even if the part creators did not.

Fun topic. Nice PowerPoint.


Dave S.

**Created using DIA, hence the text searchable PDF.

The unfortunate part of any bit of software, whether ModelCheck or the stuff you have created, is that users simply cannot be forced to use it 100% of the time. Short of using actual force (I find electric cattle prods work pretty well) some users are simply stubborn enough or just don't care enough to do it right. No software will ever force then to care. Even though PDMLink can be set up to reject the check in of any objects with ModelCheck errors, I've yet to see that implemented. Too much fear of necessary exceptions.


That's one of the ways that Layer Rules really shine. They're built right into the start parts, so users have to go out of their way to remove or alter them. The type of user that can't be bothered with ModelCheck is less likely to go removing layer rules simply out of spite. The drawback, and it's one I've had to deal with a lot in the past, is old parts created prior to implementing layer rules. That's where ModelCheck really comes into play. If the start parts have the layer rules (and all the other junk like parameters or relations), ModelCheck becomes nearly an afterthought, except for modeling practices (late rounds, geom checks, buried features, etc.)


IMO, it really should be a two-pronged approach. It is vital that all aspects of start parts be set up correctly. One that hurdle is crossed, it's only legacy data that we have to worry about. (Or data created by outside vendors.)


I know Tool Kit is extremely powerful, but haven't had much opportunity to play with it. From what I've seen, it can accomplish much of what ModelCheck does with layers, views (and then some), parameters, etc, but without the need to run it over and over, correcting stuff incrementally the way ModelCheck does.


Now, if PTC would simply create a way to reapply the start part as a template to an existing file, all our troubles with this stuff would be reduced by a significant amount!

In Reply to alfonso medina:


We have Model check running to keep our quality up. However I found the
checking to be a little S%#$@y and regardless of warning or errors people
will not fix them unless I or another admin is behind them the whole way.
But model check is not too bad. we check for layers, parameters, units,
views out of place, formats yeah the whole shavang. its just not good
enough. I already investigated into automating some tasks and its possible.
But jlink and tool kit are so much better and versatile.

Don wins for the best sentence of this whole topic. I think this is an
enhancement that is truly needed. PTC if you are listening.



Ditto what Don wrote below.



"Now, if PTC would simply create a way to reapply the start part as a
template to an existing file, all our troubles with this stuff would be
reduced by a significant amount!"



Just like replacing a format on a drawing. Replace the start part or start
assembly would be awesome.



Regards,

Ron Rich


"The layers I usually use are mostly functional, not by geometry type.

Why bother automatically putting curves on a curves layer? When I want
to do some such I can just search and get them."



My goal is to get everything that can be controlled by a layer on a
layer. This gives me ultimate control over what is displayed. I leave
the global display toggles for planes, points, etc. on and use layers to
control what I see. By gathering everything on a layer I can then hide
all layers and everything goes away. Some things (curves, surfaces,
etc.) don't have built ion controls, so the only way to control them is
by layers.



The real beauty then is doing just what you said, gathering a group of
items for a functional subset on a dedicated layer so I can toggle that
one and only those items display. So, maybe I have a series of points,
surfaces and curves that define the split line in my part. I create a
layer called 'split_line', but those items on it hide all the other
layers and isolate the 'split_line' layer and that's all I see.



This relies on an understanding of how the three states work. Unhide is
the default state, things are unhidden by default. If you hide them,
that trumps unhide and they go away. If you isolate, however, that
trumps unhide and they show up again. So, if you place things on more
than one layer with conflicting display states, you can predict what the
result will be. Using hide / unhide only, you can show all and hide
what you don't want. Using hide / isolate only you can hide all and
control what you want to see. There are some other nuances to the three
states (and the visibility hierarchy comes into play as well), but
that's the basics.



I prefer to get rid of the clutter, so I gather everything on default
layers, hide them all and then create target layers of subsets of
geometry that I need to see and isolate them as needed. I never use
unhide. I have users that would rather see it all and hide what's in
the way. For them, setting all to unhidden and hiding as needed works
better. They never touch isolate.



Doug Schaefer
--
Doug Schaefer | Experienced Mechanical Design Engineer
LinkedIn

If you have a start assy with your default rule based layers in it, it's
easy:



1. Create a new, temporary assy based on your start assy.
2. Add in the legacy or vendor parts or assemblies that need the
layers updated.
3. Remove any layers from these parts or assemblies.
4. Open the layer dialog and select all your default layers.
5. Select the layer menu and then extend rules to add the rule
based layers to your legacy & vendor models.
6. Done. Discard the temp assy and add your parts / assemblies back
into your main database.



It almost takes longer to type it out than to do it.



Oh, (shameless plug alert) and if you're hiring out CAD services (vs.
models from component suppliers) and your vendor isn't using your start
parts and layer standards, you need a new vendor. We would take all
your internal standard files and implement them into our system to make
the data delivered to you indistinguishable for that which is created
internally.



Doug Schaefer
--
Doug Schaefer | Experienced Mechanical Design Engineer
LinkedIn

Please do a write up on this.



I have many old parts with messed up layers and would be interested in your method.

In Reply to alfonso medina:


So how do you guys feel about layer rules? Basically you go to a layer and
in its properties you can set up a search rule where it can find certain
items and put them in the layer. That can also be set to "associative"
which really means automatic. If you set it to automatic, then any new
plane goes into the plane folder, and any new feature named for example
"cool_feature_XX" could also be automagically pulled into a specific layer.

My start parts have their layers set to hidden by default. For any older
part or badly imported OTS part I made a map key to create the layers and
set them up with the rules. But then this took a few too many seconds. So I
wrote a Jlink up to not only fix the layers but also create views and check
parameters and remove un used ones. The jlink version runs probably 20 to
50 times faster. Setting rules tends to be the slow part. The views are
created in the blink of an eye and same for parameter checking.

My next step is to make this a batch script and just fix everything once
and for all. I'm tired of opening a part and having to click a thousand
times to get rid of the mess of planes and lines and points and coordinate
systems and notes and surfaces and the kitchen sink. Just tired of it.
Maybe I'll post a write up. I'll post the source code in a few. Its a
modification of some other jlink stuff I found on the internets.

regards,

Alfonso


Alphonso, does Jlink have functions equilivant to using the find dialog? The find dialog has a save query operation, which creates ruled layers that are associative by default.

Glenn Beer
Top Tags