BrownTiger

Members
  • Posts

    739
  • Joined

  • Last visited

Posts posted by BrownTiger

  1. >Hello BT,  Just trying to get the new revised version to work with the previously posted roof plane macro.  

     

    Thank you. Issues with the cut and paste. Corrected

     

    >Would it be possible to return the Roof Plane # in the Roof plane label something like this ?

     

    Add something like this:

    result += "Roof Plane: " + obj.object_id.to_s

     

    i.e.

    result = "Slope Angle: " +(Math.atan2(obj.pitch,12.0)*180.0/Math::PI).round(2).to_s + "\n"

    result += "Pitch: " + obj.automatic_label+ "\n"

    result += "Area: " + ((obj.framing_area / 100.0 ).round(1)).to_s

    result += "Roof Plane: " + obj.object_id.to_s

    result

     

  2. Now I understand.

     

    Ok here is the full label macro:

    referenced ? obj = referenced : obj = owner

    if $tree.nil?

    $tree = Hash.new { |hash, key| hash[key] = {} }

    end

     

    id="p" + obj.object_id.to_s

     

    #unless $tree['roofplanes'].has_value?(id)

    items = Hash.new()

    items['roof_plane']=id

    items['pitch']=obj.automatic_label

    items['area']=obj.surface_area

    $tree['roofplanes'][id]=items

    #end

     

     

    result = "Slope Angle: " +(Math.atan2(obj.pitch,12.0)*180.0/Math::PI).round(2).to_s + "\n"

    result += "Pitch: " + obj.automatic_label+ "\n"

    result += "Area: " + ((obj.framing_area / 100.0 ).round(1)).to_s

    result

     

  3.  

    17 minutes ago, ChiefPlagman said:

    https://ruby-doc.org/core-2.4.0/Object.html#method-i-object_id

     

    Just to be clear, object_id is provided by Ruby.

     

    Thank you. I stand corrected.... It is Ruby exposed method....
     

    I have looked at names ... and did not see it... My mistake

    > owner

    => #<NVPublisher:0x00020b6aaa46b0 @names=["layer_set", "layer_line_weight", "layer_line_style", "layer_line_color", "layer_text_style", "layer_is_default", "layer", "drawing_group", "floor_number", "object_type", "line_weight_is_default", "line_weight", "line_color_is_default", "line_style_is_default", "line_style", "hole_area", "hole_perimeter", "visible_length", "num_lines", "is_closed", "is_hole", "fill_color_from_background", "fill_color_from_layer", "pattern_vertical_spacing", "pattern_horizontal_spacing", "custom_pattern_scale", "pattern_angle", "transparent_pattern", "fill_line_weight", "automatic_label", "suppress_label", "angle", "pitch", "rafter_info", "overhang_area_3d", "projected_overhang_area", "surface_area", "framing_area", "projected_area", "framing_perimeter", "layers", "soffit", "skylight_width", "skylight_height", "skylight_description", "skylight_size", "gable_fascia_depth", "gable_fascia_width", "gable_fascia_length", "gable_fascia_size", "eave_fascia_depth", "eave_fascia_width", "eave_fascia_length", "eave_fascia_size", "drip_edge_length", "num_downspouts", "valley_flashing_length", "ridge_vent_length", "edge_flashing_length", "sloped_edge_flashing_length", "skylight_room"]>

     

  4. Disclosure: I am a software developer, and this is my hobby.

     

    One of the issues I have is Chief Architect they are not exposing "ChiefUUID"

     

    CARoofPlane.thumb.PNG.3bd66a4e198fa680a6f60bf444004e5f.PNG

     

    They should really provide true and complete Ruby access to the object [object accessor], and stop been a p*, and may be even let Ruby modify.

    Every plane has this hidden value "object_id". It is never disclosed by ChiefArchitect, and appears to be immutable.

    [ChiefUUID would have been better but we do with what we have]. As you can tell to form the key I just added a letter "p": id ="p" + obj.object_id.to_s

     

    So as far as I can tell... all planes should be enumerated. 

     

    $tree['roofplanes'][id]=items

     

    Because, I think, the id is unique, the hash map $tree[ 'roofplanes'] should only allow ONE value for the key [id].

    Unless the Ruby garbage collector is not working correctly or it needs:

     

     $tree['roofplanes'].rehash  after the assignment...

     

    Now if you open multiple plans with this macro the global $tree may be populated by the different plans. 

    In this case I would recommend may be make a triple hash. $tree[project_name_key][object_type_key][object_id] .?

     

    Other possibility is to check $tree['roofplanes'].has_value?(id) and if so don't bother with .. Something like

     

    unless $tree['roofplanes'].has_value?(id)

      items = Hash.new()

      items['roof_plane']=id

      items['pitch']=obj.automatic_label

      items['area']=obj.surface_area

      $tree['roofplanes'][id]=items

    end

     

     

  5. Show the roof area macro

     

    #initialize 

    result=""

    sqft=0

     

    #for each roof plane

    $tree["roofplanes"].keys.each_with_index do |key,index|

    s= index.to_s

    #concatenate all information 

    result += "Plane: " + s +"\t" + $tree["roofplanes"][key]['pitch'] + " \t" + $tree["roofplanes"][key]["area"].round(0).to_s + " sq ft\n"

    #sum the sqft

    sqft +=$tree["roofplanes"][key]["area"].round(0)

    end

     

    #append the total

    result += "Total: " + sqft.to_s + "sq ft\n"

    result

     

  6. #  If referenced assign obj = referenced otherwise obj = owner

    referenced ? obj = referenced : obj = owner     

     

    #Next create new Hash tree if  global $tree does not exists (nil)

    if $tree.nil?

    $tree = Hash.new { |hash, key| hash[key] = {} }

    end

     

    #Next we will prepare new hash map "items" with value pairs 'roof plane' = unique id, pitch = label, etc

    id ="p" + obj.object_id.to_s

    items = Hash.new()

    items['roof_plane']=id

    items['pitch']=obj.automatic_label

    items['area']=obj.surface_area

     

    #Next place the items this two dimensional hash map $tree['roofplanes']   (Unique Id)  = hashmap

    $tree['roofplanes'][id]=items

     

    #Display the automatic label or whatever you want to see, now that we stored the information about our roof plane 

    s =obj.automatic_label

    s

  7. In version X10 Chief was exporting name, value pairs. Since X11, Ruby integration significantly improved. Now Ruby engine has access to objects

    So we have 

    drawing_group: 21

    floor_number

    layer : cad,_plan_view

    layer_line_color : 255 

    layer_line_style : 111 

    layer_line_weight : 18 

    layer_set : "Plan View Set" 

    layer_text_style : "Default Text Style" 

    line_style : setback_line

    line_weight : 18

    object_type : cad_line 

     

    Still a little different from the app, and not all properties are available...

    ObjectLine.thumb.PNG.92b8f195939d22a0f1b46a8a52a15804.PNG

     

  8. You may have to provide a picture of what in the world are you talking about... 

     

    A layouts that have a border, Some plan or plan view sent to a layout.

    Are you talking about some border over section or some other view? A border around PDF, or TIF that is embedded?

    And if you sent something to a layout did you send it as plot lines, live view?

     

    Confused

  9. ln - s (symbolic links ) are fine. They are processed at the OS level, vs cloud services that asynchronously updates the cloud images.

    Dropbox /google drive is too pitifully slow IMHO. 

     

    I suspect with a good SAN, times will be the fastests. I assume you have SAN and not NAS. With MacOS I would have no issues with mounting SAN volumes placing shared  components on them, with SANs computers communicate with SAN disk arrays using the SCSI protocol. The network is formed using SAS/SATA fabrics, or mapping layers to other protocols such as Fibre Channel Protocol (FCP) that maps SCSI over Fibre Channel, or iSCSI that maps SCSI over TCP/IP.  The SANs are much faster, the issues observed by Renerabbitt are not necessary applicable to SANs.

     

    They are not a synchronized images - rather direct reads and writes. SANs were designed to handle the shared components multiple access, etc issues.

     

     

     

  10. I do not believe a file name is relevant. Calibz is just a zip version of .calib, (SQLite3 database file). 

     

    Without me providing you with tools to read it ( If I remember correctly LibraryViews table XML contains a version), the second best option is to check the number of library objects. 

    I believe you have the newest version. 

     

  11. Oh no .... Windows issues again LOL. Let me try one last time.

     

    Hilight you DWG file with the mouse.

    Holding shift key > Right click and select "Open With" > See if X11 showing on that list

    If available select your CA X11 check the checkbox Always use this App to open DWG files... Done

     

    If not select "Choose another app" ... Scroll to the bottom to "More Apps" ... "Look for another Apps on this PC"

    Navigate C:\Program Files\Chief Architect\Chief Architect Premier X11 (64 bit)\Chief Architect Premier X11.exe
     

    Now check the checkbox Always use this App to open DWG files...

    Even if you didn't, after opening file in X11 you will get Chief architect X11 added to the list of available applications.

     

    BT

  12. Quercus Robur  Core Catalog > Plants > Trees >  Deciduous

    Pyrus (pear) Core Catalog > Plants > Kitchen Garden >  Fruits, Berries, & Nuts > Pyrus

    Magnolia Core Catalog > Plants > Trees >  Deciduous > Magnolia

    Azalea:   Core Catalog >  Shrubs >  Deciduous > Rhododendron luteum > Rhododendron luteum Azalea pontica

    Spirea:   Core Catalog >  Shrubs >  Deciduous > Spiraea

    Rosa:     Core Catalog >  Shrubs >  Deciduous > Rosa

    Prunus   Core Catalog > Trees >  Deciduous > Prunus

    Thuja     Core Catalog > Trees >  Evergreen > Thuja >Thuja occidentalis