Author Topic: Sheet Index  (Read 7618 times)

0 Members and 1 Guest are viewing this topic.

cmwade77

  • Swamp Rat
  • Posts: 1443
Re: Sheet Index
« Reply #30 on: October 07, 2020, 06:13:11 PM »
I have also tried:
Code: [Select]
'Adapted from VBScript at: https://www.theswamp.org/index.php?topic=46497.msg573062#msg573062 and from LISP at: http://www.theswamp.org/index.php?topic=52362.0
Var Results As String
Var enc() As Integer = Array(0,1,2,3,4,5,6,7,10,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,30,31,32,33,34,35,36,37,40,41,42,43,44,45,46,47,50,51,52,53,54,55,56,57,60,61,62,63,64,65,66,67,70,71,72,73,74,75,76,77,100,101,102,103,104,105,106,107,110,111,112,113,114,115,116,117,120,121,122,123,124,125,126,127,130,131,132,133,134,135,136,137,140,141,142,143,144,145,146,147,150,151,152,153,154,155,156,157,160,161,162,163,164,165,166,167,170,171,172,173,174,175,176,177,200,201,202,203,204,205,206,207,210,211,212,213,214,215,216,217,220,221,222,223,224,225,226,227,230,231,232,233,234,235,236,237,240,241,242,243,244,245,246,247,250,251,252,253,254,255,256,257,260,261,262,263,264,265,266,267,270,271,272,273,274,275,276,277,300,301,302,303,304,305,306,307,310,311,312,313,314,315,316,317,320,321,322,323,324,325,326,327,330,331,332,333,334,335,336,337,340,341,342,343,344,345,346,347,350,351,352,353,354,355,356,357,360,361,362,363,364,365,366,367,370,371,372,373,374,375,376,377)
Var dec() As Integer = Array(214,213,216,215,210,207,212,211,204,203,206,205,200,177,202,201,174,173,176,175,170,167,172,171,164,163,166,165,160,157,162,161,254,253,256,255,250,247,252,251,244,243,246,245,240,237,242,241,234,233,236,235,230,227,232,231,224,223,226,225,220,217,222,221,314,313,316,315,310,307,312,311,304,303,306,305,300,277,302,301,274,273,276,275,270,267,272,271,264,263,266,265,260,257,262,261,354,353,356,355,350,347,352,351,344,343,346,345,340,337,342,341,334,333,336,335,330,327,332,331,324,323,326,325,320,317,322,321,14,13,16,15,10,7,12,11,4,3,6,5,0,377,2,1,374,373,376,375,370,367,372,371,364,363,366,365,360,357,362,361,54,53,56,55,50,47,52,51,44,43,46,45,40,37,42,41,34,33,36,35,30,27,32,31,24,23,26,25,20,17,22,21,114,113,116,115,110,107,112,111,104,103,106,105,100,77,102,101,74,73,76,75,70,67,72,71,64,63,66,65,60,57,62,61,154,153,156,155,150,147,152,151,144,143,146,145,140,137,142,141,134,133,136,135,130,127,132,131,124,123,126,125,120,117,122,121)
If Decode Then
  For x As Integer = 1 To fInfo.Length
    Var InChar As String = fInfo.Mid(x, 1)' Read character
    Var AChar As Integer = AscB(InChar)' Convert to AscII Character
    Var Con8Char As Integer = dec(AChar)' Read Character (in Octal) from array
    Var ConChar As String = Chr(Integer.FromOctal(Con8Char.ToText))'convert octal to integer
    If results = "" Then
      Results = ConChar
    Else
      Results = Results + ConChar
    End If
  Next x
Else
  stdout.WriteLine(fInfo)
  For x As Integer = 1 To fInfo.Length
    Var InChar As String = fInfo.Mid(x, 1)' Read character
    Var AChar As Integer = AscB(InChar)' Convert to AscII Character
    Var A8Char As Integer = Oct(AChar).Val
    Var Con8Char As Integer
    For APos As Integer = 0 To dec.LastRowIndex
      If A8Char = Dec(APos) Then
        Con8Char = Enc(APos)
        Exit For APos
      End If
    Next
    Var ConChar As String = Chr(Integer.FromOctal(Con8Char.ToText))
    If results = "" Then
      Results = ConChar
    Else
      Results = Results + ConChar
    End If
  Next x
End If
Return Results

framednlv

  • Newt
  • Posts: 64
Re: Sheet Index
« Reply #31 on: October 07, 2020, 07:09:39 PM »
I don't think you need to encode it.  If it is saved as regular text autocad will read it just fine.

cmwade77

  • Swamp Rat
  • Posts: 1443
Re: Sheet Index
« Reply #32 on: October 07, 2020, 08:02:32 PM »
I don't think you need to encode it.  If it is saved as regular text autocad will read it just fine.
So it would appear, the example provided above reencoded it, but why bother if this works? Perhaps someone has some logic why the examples have converting from XML to DST when a simple saveas should suffice? Just want to make sure I am not missing something.

cmwade77

  • Swamp Rat
  • Posts: 1443
Re: Sheet Index
« Reply #33 on: October 28, 2020, 07:03:08 PM »
I must be missing something. Bare bones code sans error trapping yada ...

Code: [Select]
(cdr
    (assoc 1
        (entget
            (vlax-vla-object->ename
                (vla-item
                    (vla-item
                        (vla-get-dictionaries
                            (vla-get-activedocument
                                (vlax-get-acad-object)
                            )
                        )
                        "AcSheetSetData"
                    )
                    "ShSetFileName"
                )
            )
        )
    )
)
                                               

>> "C:\\Program Files\\Autodesk\\AutoCAD 2019\\Sample\\Sheet Sets\\Architectural\\IRD Addition.dst"
Any chance you can help me figure out how to determine the Subset of the currently opened sheet? I would really appreciate it, I think there might just be a way within AutoCAD instead of my kludge method.

cmwade77

  • Swamp Rat
  • Posts: 1443
Re: Sheet Index
« Reply #34 on: April 06, 2022, 04:47:03 PM »
I must be missing something. Bare bones code sans error trapping yada ...

Code: [Select]
(cdr
    (assoc 1
        (entget
            (vlax-vla-object->ename
                (vla-item
                    (vla-item
                        (vla-get-dictionaries
                            (vla-get-activedocument
                                (vlax-get-acad-object)
                            )
                        )
                        "AcSheetSetData"
                    )
                    "ShSetFileName"
                )
            )
        )
    )
)
                                               

>> "C:\\Program Files\\Autodesk\\AutoCAD 2019\\Sample\\Sheet Sets\\Architectural\\IRD Addition.dst"

I added in a bit of error checking and figured I would put this here in case anyone else needs it:
Code: [Select]
; Code to determine the sheet index being used was adapted from: MP @ https://www.theswamp.org/index.php?topic=56246.msg601557#msg601557
(defun GetSheetIndex (/ *ThisDrawing* Obj_SheetSetData Obj_FileName Ent) 
  (setq *ThisDrawing* (vla-get-activedocument (vlax-get-acad-object))
        *Dictionaries* (vla-get-dictionaries *ThisDrawing*)
  )
  ;Need to check to see if Dictionaries contain AcSheetSetData
  (if (dictsearch (namedobjdict) "AcSheetSetData")
    (progn
      (setq Obj_SheetSetData (vla-item *Dictionaries* "AcSheetSetData"))     
      (if Obj_SheetSetData
        (progn         
          (setq Obj_FileName (vla-item Obj_SheetSetData "ShSetFileName"))         
          (if Obj_FileName
            (progn
              (setq Ent (entget (vlax-vla-object->ename Obj_FileName))
                    Results (cdr (assoc 1 Ent))
              )
            )
           
          )
        )
      )
    )
    (alert "No Dictionary")
  )
  Results
);End GetSheetIndex