diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index 94f5e1e..800abf7 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -1,8 +1,32 @@ { "recentFiles": [ { - "basename": "pre-takeoff-confirmation", - "path": "pre-takeoff-confirmation.md" + "basename": "automating-pdf-annotation", + "path": "automating-pdf-annotation.md" + }, + { + "basename": "automating-estimating-project-creation", + "path": "automating-estimating-project-creation.md" + }, + { + "basename": "automating-email", + "path": "automating-email.md" + }, + { + "basename": "assembly-philosophy", + "path": "assembly-philosophy.md" + }, + { + "basename": "assembly-objects", + "path": "assembly-objects.md" + }, + { + "basename": "breakdown-objects", + "path": "breakdown-objects.md" + }, + { + "basename": "feeders", + "path": "feeders.md" }, { "basename": "full-takeoff", @@ -12,6 +36,10 @@ "basename": "README", "path": "README.md" }, + { + "basename": "pre-takeoff-confirmation", + "path": "pre-takeoff-confirmation.md" + }, { "basename": "breakdowns", "path": "breakdowns.md" @@ -20,30 +48,10 @@ "basename": "subfeeds", "path": "subfeeds.md" }, - { - "basename": "assembly-philosophy", - "path": "assembly-philosophy.md" - }, - { - "basename": "automating-pdf-annotation", - "path": "automating-pdf-annotation.md" - }, - { - "basename": "automating-estimating-project-creation", - "path": "automating-estimating-project-creation.md" - }, { "basename": "project-setup", "path": "project-setup.md" }, - { - "basename": "breakdown-objects", - "path": "breakdown-objects.md" - }, - { - "basename": "assembly-objects", - "path": "assembly-objects.md" - }, { "basename": "2025-07-18_estimating-isnt-engineering", "path": "2025-07-18_estimating-isnt-engineering.md" @@ -108,10 +116,6 @@ "basename": "area-of-refuge", "path": "area-of-refuge.md" }, - { - "basename": "feeders", - "path": "feeders.md" - }, { "basename": "lightning-protection", "path": "lightning-protection.md" diff --git a/assembly-objects.md b/assembly-objects.md index 1be18f0..1ec73e1 100644 --- a/assembly-objects.md +++ b/assembly-objects.md @@ -10,19 +10,33 @@ tags: # Assembly Objects ```cs -public class GangableReceptacle : IGangableDevice -... +public class GangableReceptacle : IGangableDevice, IUtilizationEquipment +{ + public int Gangs { get; } + + ... +} public class GangableSwitch : IGangableDevice ... -public class OutletBox +public class DeviceBox : IOutletBox { - public List Contents; + private List _contents; - public void Add(IUtilizationEquipment) + public void Add(IGangableDevice device) { - // Add to contents or throw if incompatible + _contents.Add(device); + } + + public int GetGangs() + { + int gangs = 0; + foreach (device in _contents) + { + gangs += device.Gangs + } + return gangs } public List Resolve() @@ -43,9 +57,15 @@ public class OutletBox - type: transfer-switch parents: 2 children: 1 + primary-rating: amperes - type: transformer parents: 1 - children: 1 + children: 1.. primary-rating: volt-amperes + +- type: generator + parents: 0 + children: 1.. + primary-rating: watts ``` diff --git a/automating-pdf-annotation.md b/automating-pdf-annotation.md index d75df7e..6932a85 100644 --- a/automating-pdf-annotation.md +++ b/automating-pdf-annotation.md @@ -10,7 +10,29 @@ tags: See [[portable-tools]] for valid dependencies. -## Bluebeam Revu Measure Hack +## Clean Documents + +### Page Rotation + +Pages have a rotation value independent of appearance +which rotates the drawing reference grid. +This must be resolved before further processing. + +Trivial coordinate-returning tools/functions +may use the non-rotation-adjusted values, +which are essentially useless for our purposes. + +MuPDF and similar libraries provide functions +to return the "visual" (read _correct_) coordinates, +but it would be ideal to redraw content with the correct orientation. + +## Extract Bluebeam Markups + +Right now I'm exporting Bluebeam markups to csv before processing, +however if I converted to the code to extract the markups directly with MuPDF.Net +as I've managed before with itext, that could save a step. + +### Bluebeam Revu Measure Hack BlueBeam Revu give coordinates for count annotations, even where count = 1. @@ -37,20 +59,6 @@ Bluebeam's .bax is a annotation interchange format based on xml > [!menu] > Markups List > Markups > Import -## Clean Documents - -### Page Rotation - -Pages have a rotation value independent of appearance -which rotates the reference grid. -This must be resolved before further processing. - -## Extract Bluebeam Markups - -Right now I'm exporting Bluebeam markups to csv before processing, -however if I converted to the code to extract the markups directly with MuPDF.Net -as I've managed before with itext, that could save a step. - ## PDF Content Positional Tokenization Recursively parse and consume pdf vector content. diff --git a/breakdown-objects.md b/breakdown-objects.md index 2b20d16..1c47e25 100644 --- a/breakdown-objects.md +++ b/breakdown-objects.md @@ -22,9 +22,19 @@ Buildings["Building A"].GetHeight() ``` ``` +Buildings["Building A"].GetLevels()[0] Buildings["Building A"].Levels[0] ``` +For jobs with only one building: + +``` +Building = Buildings["Main Building"] +Building.Levels[0] +``` + +## Pathfinding + Define equipment locations stochastically ``` diff --git a/feeders.md b/feeders.md index 6cacf72..a4b9398 100644 --- a/feeders.md +++ b/feeders.md @@ -43,7 +43,7 @@ All feeder takeoff descriptions should be prefixed with ` TO ` > [!cite] Joel Jansen, in reference to Omni Hotels Raleigh, pp. > It is acceptable to use typicals for identical feeders -> so long as the typical is in the Feeders `Area` +> so long as the typical is in the Feeders `Area`. ## Sequence