vault backup: 2025-09-20 12:47:05

This commit is contained in:
2025-09-20 12:47:05 -04:00
parent e352bf6d08
commit f8c1eaf4ff
5 changed files with 91 additions and 49 deletions
+30 -26
View File
@@ -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"
+27 -7
View File
@@ -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<IUtilizationEquipment> Contents;
private List<IGangableDevice> _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<Item> 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
```
+23 -15
View File
@@ -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.
+10
View File
@@ -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
```
+1 -1
View File
@@ -43,7 +43,7 @@ All feeder takeoff descriptions should be prefixed with `<parent> TO <child>`
> [!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