Terms of usage and legal liabilities:
Program code examples provided on this document are for informational purposes only. No warranties, 
guarantees or promises are made, implied, given, or stated as to fitness or functionality of any portions 
of the given information. User assumes any and all risks of consequential damages that may result from 
any derivative or direct implementation of example code.
All code is the work of Jürg Menzi, MENZI ENGINEERING GmbH ©2000-2007 all rights reserved, unless
explicitly noted otherwise as being the work of another author. Any similarities to existing works by other
authors is entirely accidental and unintentional. No works are taken or accepted from other authors without
explicit permission and any such works are clearly noted as to their source if not the owner of this site.
Users that do not accept these Terms and Conditions are not authorised to use or adapt this work for any 
reason in any form whatsoever.
Notes:
- Before using the Me-Functions, issue the command (vl-load-com) to initialize ActiveX support.
- Me-Functions requires vla-objects, not entities. Convert entities with (vlax-ename->vla-object EntName).
- There is also a collection of Me components using the Windows Script Technologies. This functions
  require ScrRun.dll from Windows Script Components (WinNT4/9x/ME only, included in Win2k+).
Questions, comments, ideas or corrections? Please e-mail your feedback to us.

Contents

Function name Description

MeAlignAtts

Rotates all attributes of a block to n°

MeGetAtts

Reads all attribute values from a block

MeSetAtts

Sets attribute values to block

MeGetOpenDwgs

Returns a list of all open drawings including path

MeGetTextStyles

Returns a list of all text style names and her font files

MeGetLineTypes

Returns a list of all line types and her descriptions

MeGetDimStyles

Returns a list of all dimension style names

MeGetXplotLayers

Returns a list of all plot or non plot Layers

MeGetLockLayers

Returns a list of all locked Layers

MeIsOnLockedLay

Check an object for locked Layer

MeGetLayoutNames

Returns a list of all Layout names

MeGetVptBoundary

Returns the lower left and upper right corner of a v'port in modelspace coordinates

MeGetLoadedMenus

Returns a list of all loaded Menu files and Groups

MeUnLoadMenuGroup

Unloads the specified Menu Group

MeGetPopups

Returns a list with all Menu groups, PopupID's and their IsVisible property

MeGetToolbars

Returns a list with all Menu groups, ToolbarID's and their IsContext property

MeXetDispCmdLines

Sets or gets the number of command lines

MeXetDispHistLines

Sets or gets the number of history lines in the text window

MeGetLoadedVbaProjs

Returns a list of all loaded VBA-Project names

MeGetDispBackCol

Returns the ACI-ColorNº of the actual graphics background color

MeOleToAciCol

Converts a OLE- to a ACI-Color number

MeGetTrueCol

Returns a TrueColor list from an object

MeSetTrueCol

Applies a TrueColor list to an object

MeDeleteGroup

Deletes a Group by name

MeGetGroupNames

Returns a list of all Group name(s) of the object

MeGetAcadLicenseInfos

Returns the license information's of the current AutoCAD version

MeGetAcadLanguage

Returns the *program* language of the current AutoCAD version

MeScrollDocs

Scrolls the open docs in alphabetic order up or down

MeGetMassProps

Returns a list of all mass properties of the object

MeGetInters

Returns all intersection points between two objects

MeGetBlockInters

Returns all intersection points between a block and an object

MeCloneBlockRef

Clones the specified block reference to a new name

MeExplode

Explodes complex objects

MeGetTangentAtPoint

Returns the tangent at the specified point

MeGetEndPoints

Returns the endpoints of an object

MeRevPline

Reverse vertex order of Polylines

MeGetObjLength

Returns the length of all kinds of objects

MeSetDrawOrder

Changes draw order of object(s) by given method

MeSsetSelect

ActiveX counterpart to 'ssget'

MeSsetMake

Creates a new selection set or clears an existing one

MeSsetFilter

Creates a filter for SelectXxx methods

MeListToArray

Converts a list into an array

MeArrayToList

Converts an array into a list

MeStringSubst

Substitutes one string for another, within a string

MeGetDriveInfos

Returns information's from a drive

MeGetFileInfos

Returns information's from a file

MeCopyFiles

Copies the specified file(s)

MeDeleteFiles

Deletes the specified file(s)

MeMakeDirectory

Creates the specified directory(ies)

MeDelDirectory

Deletes the specified directory

MeListNetworkDrives

Returns a list of all mapped network drives with UNC paths

MeRemapNetworkDrive

Remaps a network drive to another drive letter

MeCreateShortCut

Creates a shortcut to AutoCAD with the appropriate param's on the desktop

MeGetShortCutTargPaths

Returns all shortcut target paths according to the arguments

MeGetShortName

Returns the short path/name used by programs that require the earlier 8.3...

AcadDoc.lsp

Reactor sample

Free Programs

Miscellaneous Programs

 

MeAlignAtts - Rotates all attributes of a block to n°

;
; -- Function MeAlignAtts
; Rotates all attributes of a block to n°.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Obj = Object [VLA-OBJECT]
;   Ang = Angle (Radians) [REAL]
; Return [Type]:
;   > Null
; Notes:
;   - None
;
(defun MeAlignAtts (Obj Ang)
 (mapcar
 '(lambda (Att) (vla-put-Rotation Att Ang))
  (vlax-invoke Obj 'GetAttributes)
 )
 (vla-update Obj)
 (princ)
)

Back  

MeGetAtts - Reads all attribute values from a block

;
; -- Function MeGetAtts
; Reads all attribute values from a block.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Obj = Object [VLA-OBJECT]
; Return [Type]:
;   > Dotted pair list '(("Tag1" . "Val1")...) [LIST]
; Notes:
;   - None
;
(defun MeGetAtts (Obj)
 (mapcar 
 '(lambda (Att)
   (cons (vla-get-TagString Att)
         (vla-get-TextString Att)
   )
  )
  (vlax-invoke Obj 'GetAttributes)
 )
)

Back  

MeSetAtts - Sets attribute values to block

;
; -- Function MeSetAtts
; Sets attribute values to block.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Obj = Object [VLA-OBJECT]
;   Lst = Dotted pair list '(("Tag1" . "Val1")...) [LIST]
; Return [Type]:
;   > Null
; Notes:
;   - None
;
(defun MeSetAtts (Obj Lst / AttVal)
 (mapcar
 '(lambda (Att)
   (if (setq AttVal (cdr (assoc (vla-get-TagString Att) Lst)))
    (vla-put-TextString Att AttVal)
   )
  )
  (vlax-invoke Obj 'GetAttributes)
 )
 (vla-update Obj)
 (princ)
)

Back  

MeGetOpenDwgs - Returns a list of all open drawings including path

;
; -- Function MeGetOpenDwgs
; Returns a list of all open Drawing names including path.
; Copyright:
;   ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   None
; Return [Type]:
;   > Drawing names [LIST]
; Notes:
;   - None
; 
(defun MeGetOpenDwgs ( / DwgLst DwgNme)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (vlax-for Doc (vla-get-Documents Gb:AcO)
  (if (/= (setq DwgNme (vla-get-Fullname Doc)) "")
   (setq DwgLst (cons DwgNme DwgLst))
  )
 )
 (reverse DwgLst)
)

Back  

MeGetTextStyles - Returns a list of all text style names and her font files

;
; -- Function MeGetTextStyles
; Returns a list of all text style names and her font files.
; Copyright:
;   ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   None
; Return [Type]:
;   > Dotted pair list '(("StyleName" . "FontFile")...) [LIST]
; Notes:
;   - None
; 
(defun MeGetTextStyles ( / StyLst)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-ActiveDocument Gb:AcO)))
 (vlax-for Sty (vla-get-TextStyles Gb:AcD)
  (setq StyLst (cons
                (cons
                 (vla-get-Name Sty)
                 (vla-get-FontFile Sty)
                )
                StyLst
               )
  )
 )
 (reverse StyLst)
)

Back  

MeGetLineTypes - Returns a list of all line types and her descriptions

;
; -- Function MeGetLineTypes
; Returns a list of all line types and her descriptions.
; Copyright:
;   ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   None
; Return [Type]:
;   > Dotted pair list '(("LtpName" . "Description")...) [LIST]
; Notes:
;   - None
; 
(defun MeGetLineTypes ( / LtpLst)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-ActiveDocument Gb:AcO)))
 (vlax-for Ltp (vla-get-LineTypes Gb:AcD)
  (setq LtpLst (cons
                (cons
                 (vla-get-Name Ltp)
                 (vla-get-Description Ltp)
                )
                LtpLst
               )
  )
 )
 (reverse LtpLst)
)

Back  

MeGetDimStyles - Returns a list of all dimension style names

;
; -- Function MeGetDimStyles
; Returns a list of all dimension style names.
; Copyright:
;   ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   None
; Return [Type]:
;   > List of Dim style names [LIST]
; Notes:
;   - None
; 
(defun MeGetDimStyles ( / DstLst)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-ActiveDocument Gb:AcO)))
 (vlax-for Dst (vla-get-DimStyles Gb:AcD)
  (setq DstLst (cons (vla-get-Name Dst) DstLst))
 )
 (reverse DstLst)
)

Back  

MeGetXplotLayers - Returns a list of all plot or non plot layers

;
; -- Function MeGetXplotLayers
; Returns a list of all plot or non plot layers.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Mde = Flag [SYM]
;         Constants:
;         - :vlax-true  Plot layers
;         - :vlax-false Non plot layers
; Return [Type]:
;   > Layer names [LIST]
; Notes:
;   - None
; 
(defun MeGetXplotLayers (Mde / NmeLst)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-ActiveDocument Gb:AcO)))
 (vlax-for Obj (vla-get-Layers Gb:AcD)
  (if (= (vla-get-plottable Obj) Mde)
   (setq NmeLst (cons (vla-get-name Obj) NmeLst))
  )
  (vlax-release-object Obj)
 )
 (reverse NmeLst)
)

Back  

MeGetLockLayers - Returns a list of all locked layers

;
; -- Function MeGetLockLayers
; Returns a list of all locked layers.
; Copyright:
;   ©2004 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   --- =
; Return [Type]:
;   > Layer names [LIST]
; Notes:
;   - None
; 
(defun MeGetLockLayers ( / NmeLst)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-ActiveDocument Gb:AcO)))
 (vlax-for Obj (vla-get-Layers Gb:AcD)
  (if (= (vla-get-Lock Obj) :vlax-true)
   (setq NmeLst (cons (vla-get-name Obj) NmeLst))
  )
  (vlax-release-object Obj)
 )
 (reverse NmeLst)
)

Back  

MeIsOnLockedLay - Check an object for locked layer

;
; -- Function MeIsOnLockedLay
; Check an object for locked layer.
; Copyright:
;   ©2004 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Obj = Object [VLA-OBJECT]
; Return [Type]:
;   > :vlax-true  = Object is on a locked layer [SYM]
;   > :vlax-false = Object is not on a locked layer [SYM]
; Notes:
;   - None
; 
(defun MeIsOnLockedLay (Obj)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-ActiveDocument Gb:AcO)))
 (vla-get-Lock
  (vla-Item
   (vla-get-Layers Gb:AcD)
   (vla-get-Layer Obj)
  )
 )
)

Back  

MeGetLayoutNames - Returns a list of all Layout names

;
; -- Function MeGetLayoutNames
; Returns a list of all Layout names.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   --- =
; Return [Type]:
;   > Layout names [LIST]
; Notes:
;   - None
; 
(defun MeGetLayoutNames ( / NmeLst)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-ActiveDocument Gb:AcO)))
 (vlax-for obj (vla-get-layouts Gb:AcD)
  (setq NmeLst (cons (vla-get-name obj) NmeLst))
  (vlax-release-object Obj)
 )
 (reverse NmeLst)
)

Back  

MeGetVptBoundary - Returns the lower left and upper right corner of a view...

;
; -- Function MeGetVptBoundary
; Returns the lower left and upper right corner of a viewport in model space
; coordinates.
; Copyright:
;   ©2002 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Obj = Viewport object [VLA-OBJECT]
; Return [Type]:
;   > Point list [LIST]
; Notes:
;   - None
;
(defun MeGetVptBoundary (Obj / VptCen XofSet YofSet)
 (setq VptCen (vlax-get Obj 'Center)
       XofSet (/ (vla-get-Width Obj) 2.0)
       YofSet (/ (vla-get-Height Obj) 2.0)
 )
 (list
  (trans (list (- (car VptCen) XofSet) (- (cadr VptCen) YofSet)) 3 2)
  (trans (list (+ (car VptCen) XofSet) (+ (cadr VptCen) YofSet)) 3 2)
 )
)

Back  

MeGetLoadedMenus - Returns a list of all loaded Menu files and Groups

;
; -- Function MeGetLoadedMenus
; Returns a list of all loaded Menu files and Groups.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   --- =
; Return [Type]:
;   > Dotted pair list '(("MenuFile" . "MenuGroup")...) [LIST]
; Notes:
;   - None
; 
(defun MeGetLoadedMenus ( / MnuLst)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (vlax-for Obj (vla-get-MenuGroups Gb:AcO)
  (setq MnuLst (cons
                (cons
                 (vla-get-MenuFileName Obj)
                 (vla-get-Name Obj)
                )
                MnuLst
               )
  )
  (vlax-release-object Obj)
 )
 (reverse MnuLst)
)

Back  

MeUnLoadMenuGroup - Unloads the specified Menu Group

;
; -- Function MeUnLoadMenuGroup
; Unloads the specified Menu Group.
; Copyright:
;   ©2002 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Nme = Menu group name [STR]
; Return [Type]:
;   > Null
; Notes:
;   - None
; 
(defun MeUnLoadMenuGroup (Nme)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (vlax-for Obj (vla-get-MenuGroups Gb:AcO)
  (if (eq (vla-get-Name Obj) Nme)
   (vla-unload Obj)
  )
  (vlax-release-object Obj)
 )
 (princ)
)

Back  

MeGetPopups - Returns a list with all Menu groups, PopupID's and their ...

;
; -- Function MeGetPopups
; Returns a list with all Menu groups, PopupID's and their IsContext property.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   --- =
; Return [Type]:
;   > Nested dotted pair list:
;     '(("MenuGroup" . '(("PopupID" . IsContext)...))...) [LIST]
; Notes:
;   - If you want to list the menu names in place of the ID's,
;     change the property vla-get-TagString to vla-get-Name, see *)
;
(defun MeGetPopups ( / PopLst TmpLst)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (vlax-for Grp (vla-get-MenuGroups Gb:AcO)
  (setq TmpLst '())
  (vlax-for Pop (vla-get-Menus Grp)
   (setq TmpLst (cons
                 (cons
                  (vla-get-TagString Pop) ;*)
                  (if (= (vla-get-OnMenuBar Pop) :vlax-false) 1 0)
                 )
                 TmpLst
                )
   )
   (vlax-release-object Pop)
  )
  (setq PopLst (cons
                (cons
                 (vla-get-Name Grp)
                 (reverse TmpLst)
                )
                PopLst
               )
  )
  (vlax-release-object Grp)
 )
 (reverse PopLst)
)

Back  

MeGetToolbars - Returns a list with all Menu groups, ToolbarID's and their...

;
; -- Function MeGetToolbars
; Returns a list with all Menu groups, ToolbarID's and their IsVisible property.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   --- =
; Return [Type]:
;   > Nested dotted pair list:
;     '(("MenuGroup" . '(("ToolbarID" . IsVisible)...))...) [LIST]
; Notes:
;   - If you want to list the menu names in place of the ID's,
;     change the property vla-get-TagString to vla-get-Name, see *)
;
(defun MeGetToolbars ( / TlbLst TmpLst)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (vlax-for Grp (vla-get-MenuGroups Gb:AcO)
  (setq TmpLst '())
  (vlax-for Tlb (vla-get-Toolbars Grp)
   (setq TmpLst (cons
                 (cons
                  (vla-get-TagString Tlb) ;*)
                  (if (= (vla-get-visible Tlb) :vlax-true) 1 0)
                 )
                 TmpLst
                )
   )
   (vlax-release-object Tlp)
  )
  (setq TlbLst (cons
                (cons
                 (vla-get-Name Grp)
                 (reverse TmpLst)
                )
                TlbLst
               )
  )
  (vlax-release-object Grp)
 )
 (reverse TlbLst)
)

Back  

MeXetDispCmdLines - Sets or gets the number of command lines

;
; -- Function MeXetDispCmdLines
; Sets or gets the number of command lines.
; Copyright:
;   ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Mde = Mode, Values:
;         - Nil (MeGetDispCmdLines) [SYM]
;         - Number of command lines (MeSetDispCmdLines) [INT]
; Return [Type]:
;   > Number of command lines (Mde = Nil) [INT]
;   > Nil (Mde = Number) [SYM]
; Notes:
;   - If Mde is numeric, it must be > 0.
;   - AutoCAD 2k0/2k2 only, not available in 2k4+
;
(defun MeXetDispCmdLines (Mde / DspObj)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (setq DspObj (vla-get-Display (vla-get-Preferences Gb:AcO)))
 (if (numberp Mde)
  (vla-put-DockedVisibleLines DspObj Mde)
  (vla-get-DockedVisibleLines DspObj)
 )
)

Back  

MeXetDispHistLines - Sets or gets the number of history lines in the text...

;
; -- Function MeXetDispHistLines
; Sets or gets the number of history lines in the text window.
; Copyright:
;   ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Mde = Mode, Values:
;         - Nil (MeGetDispHistLines) [SYM]
;         - Number of history lines (MeSetDispHistLines) [INT]
; Return [Type]:
;   > Number of history lines (Mde = Nil) [INT]
;   > Nil (Mde = Number) [SYM]
; Notes:
;   - If Mde is numeric, it must be >= 25 and <= 2048.
;
(defun MeXetDispHistLines (Mde / DspObj)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (setq DspObj (vla-get-Display (vla-get-Preferences Gb:AcO)))
 (if (numberp Mde)
  (vla-put-HistoryLines DspObj Mde)
  (vla-get-HistoryLines DspObj)
 )
)

Back  

MeGetLoadedVbaProjs - Returns a list of all loaded VBA-Project names

;
; -- Function MeGetLoadedVbaProjs
; Returns a list of all loaded VBA-Project names.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   --- =
; Return [Type]:
;   > VBA-Project names [LIST]
; Notes:
;   - None
; 
(defun MeGetLoadedVbaProjs ( / AllPrj IndCnt PrjLst)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (setq AllPrj (vlax-get-property
               (vla-get-VBE Gb:AcO)
               'VbProjects
              )
       IndCnt 1
 )
 (repeat (vla-get-Count AllPrj)
  (setq PrjLst (cons
                (vla-get-Name (vla-Item AllPrj IndCnt))
                PrjLst
               )
        IndCnt (1+ IndCnt)
  )
 )
 (reverse PrjLst)
)

Back  

MeGetDispBackCol - Returns the ACI-ColorNº of the actual graphics...

;
; -- Function MeGetDispBackCol
; Returns the ACI-ColorNº of the actual graphics background.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   None
; Return [Type]:
;   > ACI-Colornumber of the active space background [INT]
; Notes:
;   - None
; 
(defun MeGetDispBackCol ( / DspObj)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (setq DspObj (vla-get-display (vla-get-preferences Gb:AcO)))
 (MeOleToAciCol
  (if (= (caar (vports)) 1)
   (vla-get-GraphicsWinLayoutBackgrndColor DspObj)
   (vla-get-GraphicsWinModelBackgrndColor DspObj)
  )
 )
)

Back  

MeOleToAciCol - Converts a OLE- to a ACI-Colornumber

;
; -- Function MeOleToAciCol
; Converts a OLE- to a ACI-Colornumber.
; Copyright:
;   ©2000 Jimmy Bergmark
; Arguments [Type]:
;   OleCol = OLE-Colornumber [INT]
; Return [Type]:
;   > ACI-Colornumber [INT]
; Notes:
;   - Thanx Jimmy Bergmark for his excellent color converter.
;
(defun MeOleToAciCol (OleCol)
 (vl-position
  (boole
   1
   (vlax-variant-value (vlax-variant-change-type OleCol vlax-vbLong))
   16777215
  )
 '(0        255      65535    65280    16776960
   16711680 16711935 16777215 8421504  12632256
   255      8421631  166      5460902  128
   4210816  76       2500172  38       1250086
   16639    8429567  10662    5466278  8320
   4214912  4940     2502732  2598     1251366
   33023    8437759  21414    5471398  16512
   4219008  9804     2505036  4902     1252646
   49151    8445951  31910    5476774  24704
   4223104  14668    2507596  7462     1253670
   65535    8454143  42662    5482150  32896
   4227200  19532    2509900  9766     1254950
   65471    8454111  42620    5482129  32864
   4227184  19513    2509891  9757     1254945
   65408    8454079  42579    5482108  32832
   4227168  19494    2509881  9747     1254941
   65344    8454047  42537    5482088  32800
   4227152  19475    2509872  9738     1254936
   65280    8454016  42496    5482067  32768
   4227136  19456    2509862  9728     1254931
   4259584  10485632 2729472  6858323  2129920
   5275712  1264640  3165222  665088   1582611
   8453888  12582784 5481984  8169043  4227072
   6324288  2509824  3755046  1254912  1910291
   12582656 14679936 8168960  9545299  6324224
   7372864  3755008  4410406  1910272  2172435
   16776960 16777088 10921472 10921555 8421376
   8421440  5000192  5000230  2500096  2500115
   16760576 16768896 10910720 10916179 8413184
   8417344  4995328  4997926  2497792  2498835
   16744448 16760704 10900224 10910803 8404992
   8413248  4990464  4995366  2495232  2497811
   16728064 16752512 10889472 10905683 8396800
   8409152  4985600  4993062  2492928  2496531
   16711680 16744576 10878976 10900307 8388608
   8405056  4980736  4990502  2490368  2495251
   16711744 16744607 10879017 10900328 8388640
   8405072  4980755  4990512  2490378  2495256
   16711808 16744639 10879059 10900348 8388672
   8405088  4980774  4990521  2490387  2495261
   16711871 16744671 10879100 10900369 8388704
   8405104  4980793  4990531  2490397  2495265
   16711935 16744703 10879142 10900390 8388736
   8405120  4980812  4990540  2490406  2495270
   12517631 14647551 8126630  9524134  6291584
   7356544  3735628  4400716  1900582  2167590
   8388863  12550399 5439654  8147878  4194432
   6307968  2490444  3745356  1245222  1905446
   4194559  10453247 2687142  6837158  2097280
   5259392  1245260  3155532  655398   1577766
   5526612  7763574  10000536 12303291 14540253
   16777215
  )
 )
)

Back  

MeGetTrueCol - Returns a TrueColor list from an object

;
; -- Function MeGetTrueCol
; Returns a TrueColor list from an object.
; Arguments [Type]:
;   Obj = Object to read [VLA-OBJECT]
; Return [Type]:
;   > ColorMethod and Color or RGB list '(CM (R G B)) [LIST]
; Notes:
;   - AutoCAD 2k4+ only
;
(defun MeGetTrueCol (Obj / ColObj ColMet)
 (setq ColObj (vla-get-TrueColor Obj)
       ColMet (vla-get-ColorMethod ColObj)
 )
 (cons
  ColMet
  (if (= ColMet acColorMethodByRGB)
   (mapcar '(lambda (l) (vlax-get ColObj l)) '(Red Green Blue))
   (vla-get-ColorIndex ColObj)
  )
 )
)

Back  

MeSetTrueCol - Applies a TrueColor list to an object

;
; -- Function MeSetTrueCol
; Applies a TrueColor list to an object.
; Arguments [Type]:
;   Obj = Object to modify [VLA-OBJECT]
;   Lst = ColorMethod and Color or RGB list '(CM (R G B)) [LIST]
;         ColorMethodes: 
;         - acColorMethodByACI
;         - acColorMethodByBlock
;         - acColorMethodByLayer
;         - acColorMethodByRGB
;         - acColorMethodForeground
; Return [Type]:
;   > Modified object [VLA-OBJECT]
; Notes:
;   - AutoCAD 2k4+ only
;
(defun MeSetTrueCol (Obj Lst / ColObj ColMet)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (setq ColObj (vla-GetInterfaceObject Gb:AcO "AutoCAD.AcCmColor.16")
       ColMet (car Lst)
 )
 (vla-put-ColorMethod ColObj ColMet)
 (if (= ColMet acColorMethodByRGB)
  (vla-SetRGB ColObj (cadr Lst) (caddr Lst) (cadddr Lst))
  (vla-put-ColorIndex ColObj (cdr Lst))
 )
 (vla-put-TrueColor Obj ColObj)
 (vlax-release-object ColObj)
 Obj
)

Back  

MeDeleteGroup - Deletes a group by name

;
; -- Function MeDeleteGroup
; Deletes a group by name.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Nme = Group name [STR]
; Return [Type]:
;   > Null
; Notes:
;   - None
;
(defun MeDeleteGroup (Nme)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-activedocument Gb:AcO)))
 (vl-catch-all-apply
 '(lambda ()
   (vla-delete
    (vla-item
     (vla-get-groups Gb:AcD)
     Nme
    )
   )
  )
 )
 (princ)
)

Back  

MeGetGroupNames - Returns a list of all Group name(s) of the object

;
; -- Function MeGetGroupNames
; Returns a list of all Group name(s) of the object.
; Copyright:
;   ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Obj = Object [VLA-OBJECT]
; Return [Type]:
;   > Group name(s) [LIST]
; Notes:
;   - None
; 
(defun MeGetGroupNames (Obj / Cur_ID NmeLst)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-activedocument Gb:AcO)))
 (setq Cur_ID (vla-get-ObjectID Obj))
 (vlax-for Grp (vla-get-Groups Gb:AcD)
  (vlax-for Ent Grp
   (if (equal (vla-get-ObjectID Ent) Cur_ID)
    (setq NmeLst (cons (vla-get-Name Grp) NmeLst))
   )
   (vlax-release-object Ent)
  )
  (vlax-release-object Grp)
 )
 (reverse NmeLst)
)

Back  

MeGetAcadLicenseInfos - Returns the license information's of the current...

;
; -- Function MeGetAcadLicenseInfos 
; Returns the license information's of the current AutoCAD version
; like ProductName, Release, SerialNumber, Language, etc.
; Copyright:
;   ©2004 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   None
; Return [Type]:
;   > License information's '((Info1 . Value1)...) [STR]
; Notes:
;   - The number of information's depends on the AutoCAD version
;   
(defun MeGetAcadLicenseInfos ( / KeyLst RegPth RetVal)
 (setq RegPth (strcat "HKEY_LOCAL_MACHINE\\" (vlax-product-key))
       KeyLst (vl-registry-descendents RegPth T)
 )
 (foreach memb KeyLst
  (if (not (eq memb ""))
   (setq RetVal (cons
                 (cons memb (vl-registry-read RegPth memb))
                 RetVal
                )
   )
  )
 )
 (reverse RetVal)
)

Back  

MeGetAcadLanguage - Returns the *program* language of the current...

;
; -- Function MeGetAcadLanguage 
; Returns the *program* language of the current AutoCAD version.
; Copyright:
;   ©2004 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   None
; Return [Type]:
;   > Language ("English", "Deutsch", "Français", etc.) [STR]
; Notes:
;   - None
;   
(defun MeGetAcadLanguage ( / RegPth)
 (setq RegPth (strcat "HKEY_LOCAL_MACHINE\\" (vlax-product-key)))
 (vl-registry-read RegPth "Language")
)

Back  

MeScrollDocs - Scrolls the open docs in alphabetic order up or down

;
; -- Function MeScrollDocs
; Scrolls the open docs in alphabetic order up or down.
; Copyright:
;   ©2004 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Dir = Direction "U" or "D" (Up or Down) [STR]
; Return [Type]:
;   > Null
; Notes:
;   - Load this function by AcadDoc.lsp to have it available in each
;     document
;
(defun MeScrollDocs (Dir / DocCol DocLst DocNum DocObj MaxPos MovDir)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (setq DocCol (vlax-get Gb:AcO 'Documents))
 (if (> (vla-get-Count DocCol) 1)
  (progn
   (vlax-for DocObj DocCol
    (setq DocLst (cons (cons (vla-get-Name DocObj) DocObj) DocLst))
   )
   (setq DocLst (vl-sort
                 DocLst
                 (function
                  (lambda (a b)
                   (< (strcase (car a)) (strcase (car b)))
                  )
                 )
                )
         MaxPos (1- (length DocLst))
         MovDir (eq (strcase Dir) "D")
         DocNum (vl-position (getvar 'DWGNAME) (mapcar 'car DocLst))
         DocNum (cond
                 ((and MovDir (< DocNum MaxPos)) (1+ DocNum))
                 ((and MovDir (= DocNum MaxPos)) 0)
                 ((> DocNum 0) (1- DocNum))
                 (MaxPos)
                )
   )
   (vlax-put Gb:AcO 'Activedocument (cdr (nth DocNum DocLst)))
  )
 )
 (princ)
)

Back  

MeGetMassProps - Returns a list of all mass properties of the object

;
; -- Function MeGetMassProps
; Returns a list of all mass properties of the object.
; Copyright:
;   ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Obj = Object [VLA-OBJECT]
; Return [Type]:
;   > Mass properties '(Centroid RadiiOfGyration PrincipalDirections
;                       PrincipalMoments MomentOfInertia ProductOfInertia
;                       {Area Perimeter} {Volume}) [LIST]
; Notes:
;   - MeGetMassProps is designed to handle closed *Polylines, 
;     Regions and 3dsolids.
;   - *Polylines and Regions returns 2D-lists in some parameters.
;   - 2D-objects returns '(. . . . . . Area Perimeter)
;   - 3D-objects returns '(. . . . . . Volume)
; 
(defun MeGetMassProps (Obj / DelFlg ResLst TmpObj)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-activedocument Gb:AcO)))
 (if (member (vla-get-ObjectName Obj) '("AcDb2dPolyline" "AcDbPolyline"))
  (setq DelFlg T
        TmpObj (vlax-safearray-get-element
                (vlax-variant-value
                 (vla-AddRegion
                  (vla-get-ModelSpace Gb:AcD)
                  (MeListToArray (list Obj) vlax-vbObject) 
                 )
                )
                0
               )
  )
  (setq TmpObj Obj)
 )
 (setq ResLst (append
               (list
                (vlax-get TmpObj 'Centroid)
                (vlax-get TmpObj 'RadiiOfGyration)
                (vlax-get TmpObj 'PrincipalDirections)
                (vlax-get TmpObj 'PrincipalMoments)
                (vlax-get TmpObj 'MomentOfInertia)
               )
               (if (= (vla-get-ObjectName TmpObj) "AcDbRegion")
                (list
                 (vla-get-ProductOfInertia TmpObj)
                 (vla-get-Area TmpObj)
                 (vla-get-Perimeter TmpObj)
                )
                (list
                 (vlax-get TmpObj 'ProductOfInertia)
                 (vla-get-Volume TmpObj)
                 nil
                )
               )
              )
 )
 (if DelFlg (vla-delete TmpObj))
 ResLst
)

Back  

MeGetInters - Returns all intersection points between two objects

;
; -- Function MeGetInters
; Returns all intersection points between two objects.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Fst = First object [VLA-OBJECT]
;   Nxt = Second object [VLA-OBJECT]
;   Mde = Intersection mode [INT]
;         Constants:
;         - acExtendNone           Does not extend either object.
;         - acExtendThisEntity     Extends the Fst object.
;         - acExtendOtherEntity    Extends the Nxt object.
;         - acExtendBoth           Extends both objects.
; Return [Type]:
;   > List of points '((1.0 1.0 0.0)... [LIST]
;   > Nil if no intersection found
; Notes:
;   - None
; 
(defun MeGetInters (Fst Nxt Mde / IntLst PntLst)
 (setq IntLst (vlax-invoke Fst 'IntersectWith Nxt Mde))
 (cond
  (IntLst
   (repeat (/ (length IntLst) 3)
    (setq PntLst (cons
                  (list
                   (car IntLst)
                   (cadr IntLst)
                   (caddr IntLst)
                  )
                  PntLst
                 )
          IntLst (cdddr IntLst)
    )
   )
   (reverse PntLst)
  )
  (T nil)
 )
)

Back  

MeGetBlockInters - Returns all intersection points between a block and an obj...

;
; -- Function MeGetBlockInters
; Returns all intersection points between a Block and an object.
; Copyright:
;   ©2001-2002 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Blk = Block object [VLA-OBJECT]
;   Obj = Object [VLA-OBJECT]
;   Mde = Intersection mode [INT]
;         Constants:
;         - acExtendNone           Does not extend either object.
;         - acExtendThisEntity     Extends the Fst object.
;         - acExtendOtherEntity    Extends the Nxt object.
;         - acExtendBoth           Extends both objects.
; Return [Type]:
;   > list of points '((1.0 1.0 0.0)... [LIST]
;   > Nil if no intersection found
; Notes:
;   - Because of a (reported) bug in A2k4+, the used explode method
;     will fail on NUS blocks. No limitations in A2k, A2ki and A2k2
; 
(defun MeGetBlockInters (Blk Obj Mde / ObjNme PntLst TmpVal)
 (foreach memb (vlax-invoke Blk 'Explode)
  (setq ObjNme (vla-get-ObjectName memb))
  (cond
   ((or
     (not (vlax-method-applicable-p memb 'IntersectWith))
     (and
      (eq ObjNme "AcDbHatch")
      (eq (strcase (vla-get-PatternName memb)) "SOLID")
     )
     (eq ObjNme "AcDb3dSolid")
    )
   )
   ((eq ObjNme "AcDbBlockReference")
    (if (setq TmpVal (MeGetBlockInters memb Obj Mde))
     (setq PntLst (append PntLst TmpVal))
    )
   )
   (T
    (if (setq TmpVal (MeGetInters memb Obj Mde))
     (setq PntLst (append PntLst TmpVal))
    )
   )
  )
  (vla-Delete memb)
 )
 PntLst
)

Back  

MeCloneBlockRef - Clones the specified block reference to a new name

;
; -- Function MeCloneBlockRef
; Clones the specified block reference to a new name.
; Copyright:
;   ©2004 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Src = Source block reference name [STR]
;   Tar = Target block reference name [STR]
; Return [Type]:
;   > New block reference object [VLA_OBJECT]
;   > Nil if source name not exists, target name exists or ObjectDBX error
; Notes:
;   - Credits to Tony Tanzillo 
;   - For A2k-A2k2 you need to register axdb15.dll by regsvr32, no need
;     to do that for A2k4+
; 
(defun MeCloneBlockRef (Src Tar / DbxDoc DbxStr SrcBlk SrcCol TarBlk TarCol)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-ActiveDocument Gb:AcO)))
 (setq DbxStr (if (< (atof (getvar "ACADVER")) 16.0)
               "ObjectDBX.AxDbDocument"
               "ObjectDBX.AxDbDocument.16"
              )
 )
 (if (and
      (tblsearch "BLOCK" Src)
      (not (tblsearch "BLOCK" Tar))
      (not
       (vl-catch-all-error-p
        (setq DbxDoc (vl-catch-all-apply
                      'vla-GetInterfaceObject (list Gb:AcO DbxStr)
                     )
        )
       )
      )
     )
  (progn
   (setq SrcCol (vla-get-Blocks Gb:AcD)
         TarCol (vla-get-Blocks DbxDoc)
         SrcBlk (vla-Item SrcCol Src)
   )
   (vlax-invoke Gb:AcD 'CopyObjects (list SrcBlk) TarCol)
   (setq TarBlk (vla-Item TarCol Src))
   (vla-put-Name TarBlk Tar)
   (vlax-invoke DbxDoc 'CopyObjects (list TarBlk) SrcCol)
   (vlax-release-object DbxDoc)
   (vla-Item (vla-get-Blocks Gb:AcD) Tar)
  )
 )
)

Back  

MeExplode - Explodes complex objects

;
; -- Function MeExplode
; Explodes complex objects.
; Copyright:
;   ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Obj = Complex object [VLA-OBJECT]
;   Del = Delete mode [SYM]
;         - T =   Delete base object
;         - nil = Keep base object
; Return [Type]:
;   > Selection set [PICKSET]
; Notes:
;   - Because of a (reported) bug in A2k4+, the used explode method
;     will fail on NUS blocks. No limitations in A2k, A2ki and A2k2
;
(defun MeExplode (Obj Del / CurSet ExpMde)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-ActiveDocument Gb:AcO)))
 (setq ExpMde (vla-GetVariable Gb:AcD "EXPLMODE")
       CurSet (ssadd)
 )
 (vla-SetVariable Gb:AcD "EXPLMODE" 1)
 (foreach memb (vlax-invoke Obj 'Explode)
  (ssadd (vlax-vla-object->ename memb) CurSet)
 )
 (if Del (vla-delete Obj))
 (vla-SetVariable Gb:AcD "EXPLMODE" ExpMde)
 CurSet
)

Back  

MeGetTangentAtPoint - Returns the tangent at the specific point

;
; == Function MeGetTangentAtPoint
; Returns the tangent at the specified point.
; Copyright:
;   ©2004 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Obj = Object [VLA-OBJECT/ENAME]
;   Pnt = Point on object [LIST]
; Return [Type]:
;   > Tangent angle at point [REAL]
;   > False if point is not on object.
; Notes:
;   - None
;
(defun MeGetTangentAtPoint (Obj Pnt / CurPar PntLst TmpPnt)
 (setq PntLst (MeGetEndPoints Obj)
       CurPar (cond
               ((equal Pnt (car PntLst) 1E-5)
                (vlax-curve-getStartParam Obj)
               )
               ((equal Pnt (cadr PntLst) 1E-5)
                (vlax-curve-getEndParam Obj)
               )
               ((setq TmpPnt (vlax-curve-getClosestPointTo Obj Pnt))
                (if (<= (distance TmpPnt Pnt) 1E-5)
                 (vlax-curve-getParamAtPoint Obj TmpPnt)
                )
               )
               (T nil)
              )
 )
 (if CurPar
  (angle
  '(0.0 0.0 0.0)
   (vlax-curve-getFirstDeriv Obj CurPar)
  )
 )
)

Back  

MeGetEndPoints - Returns the endpoints of an object

;
; -- Function MeGetEndPoints
; Returns the endpoints of an object.
; Copyright:
;   ©2004 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Obj = Object [VLA-OBJECT/ENAME]
; Return [Type]:
;   > Endpoints '((x y z) (x y z)) [LIST]
;   > Nil if invalid object
; Notes:
;   - Proceeds *Polyline, Spline, Ellipse, Line and Arc
; 
(defun MeGetEndPoints (Obj)
 (list
  (vlax-curve-getStartPoint Obj)
  (vlax-curve-getEndPoint Obj)
 )
)

Back  

MeRevPline - Reverse vertex order of Polylines

;
; -- Function MeRevPline
; Reverse vertex order of Polylines.
; Copyright:
;   ©2004 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Obj = Pline object [VLA-OBJECT]
; Return [Type]:
;   > Pline object reversed [VLA-OBJECT]
; Notes:
;   - Credits to Angeliki Anastasopoulou
; 
(defun MeRevPline (Obj / BlgLst ObjName PntLst SegCnt TmpLst Ubound)
 (setq ObjName (strcase (vlax-get Obj 'ObjectName))
       TmpLst (vlax-get Obj 'Coordinates)
 )
 (if (eq ObjNme "AcDbPolyline")
  (repeat (/ (length TmpLst) 2)
   (setq PntLst (cons (list (car TmpLst) (cadr TmpLst)) PntLst)
         TmpLst (cddr TmpLst)
   )
  )
  (repeat (/ (length TmpLst) 3)
   (setq PntLst (cons (list (car TmpLst) (cadr TmpLst) (caddr TmpLst)) PntLst)
         TmpLst (cdddr TmpLst)
   )
  )
 )
 (vlax-put Obj 'Coordinates (apply 'append PntLst))
 (if (not (eq ObjNme "AcDb3dPolyline"))
  (progn
   (setq Ubound (1- (length PntLst))
         BlgLst (list (* (vla-GetBulge Obj Ubound) -1))
         SegCnt 0
   )
   (repeat Ubound
    (setq BlgLst (cons (* (vla-GetBulge Obj SegCnt) -1) BlgLst)
          SegCnt (1+ SegCnt)
    )
   )
   (setq SegCnt 0)
   (foreach memb BlgLst
    (vla-SetBulge Obj SegCnt memb)
    (setq SegCnt (1+ SegCnt))
   )
  )
 )
 (vla-Update Obj)
 Obj
)

Back  

MeGetObjLength - Returns the length of all kind of objects

;
; -- Function MeGetObjLength
; Returns the length of all kind of objects.
; Copyright:
;   ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Obj = Object [VLA-OBJECT/ENAME]
; Return [Type]:
;   > Length of the object [REAL]
; Notes:
;   - Proceeds *Polylines, Splines, Lines, Arcs, Circles and Ellipses
; 
(defun MeGetObjLength (Obj)
 (vlax-curve-getDistAtParam Obj (vlax-curve-getEndParam Obj))
)

Back  

MeSetDrawOrder - Changes draw order of object(s) by given method

;
; -- Function MeSetDrawOrder
; Changes draw order of object(s) by given method.
; Copyright:
;   ©2004 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Obl = Object list [LIST]
;   Tob = Target object [VLA-OBJECT] *)
;         or nil
;   Mde = Draw order method [SYMBOL]
;         Methods:
;         - 'MoveToTop
;         - 'MoveToBottom
;         - 'MoveAbove
;         - 'MoveBelow
; Return [Type]:
;   - True =  MeSetDrawOrder succeed [BOOLEAN]
;   - False = MeSetDrawOrder failed [BOOLEAN]
; Notes:
;   *) Draw order methods 'MoveAbove and 'MoveBelow require
;      a target object (Tob) as target of the draw order.
;   - AutoCAD 2k5+ only (Bug? <2k5 missing class 'AcDbSortentsTable')
;
(defun MeSetDrawOrder (Obl Tob Mde / ExtDic SreTbl)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-ActiveDocument Gb:AcO)))
 (setq ExtDic (vla-GetExtensionDictionary (vla-get-ModelSpace Gb:AcD)))
 (if (vl-catch-all-error-p
      (setq SreTbl (vl-catch-all-apply
                    'vla-Item (list ExtDic "ACAD_SORTENTS")
                   )
      )
     )
  (setq SreTbl (vla-AddObject ExtDic "ACAD_SORTENTS" "AcDbSortentsTable"))
 )
 (cond
  ((vl-position Mde '(MoveToTop MoveToBottom))
   (not (vlax-Invoke SreTbl Mde Obl))
  )
  (Tob
   (not (vlax-Invoke SreTbl Mde Obl Tob))
  )
 )
)

Back  

MeSsetSelect - ActiveX counterpart to 'ssget'

;
; -- Function MeSsetSelect
; ActiveX counterpart to 'ssget'.
; Copyright:
;   ©2002 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Nme = Selection set name [STR]
;   Mde = Select mode [INT] 1)
;         Constants:
;         - acSelectionSetWindow 
;         - acSelectionSetCrossing 
;         - acSelectionSetPrevious 
;         - acSelectionSetLast 
;         - acSelectionSetAll 
;   Pt1 = First window corner [LIST] 2)
;   Pt2 = Next window corner [LIST]  2)
;   Flt = Dotted pair list '((0 . "Name")...(8 . "Layer")) [LIST] 3)
; Return [Type]:
;   > New selection set [VLA-OBJECT]
; Notes:
;   1) If nil, SelectOnScreen is used
;   2) For select modes acSelectionSetWindow and acSelectionSetCrossing
;      only, else nil
;   3) Set to nil if not used
;
(defun MeSsetSelect (Nme Mde Pt1 Pt2 Flt / CurSet FltLst FstPnt NxtPnt)
 (setq CurSet (MeSsetMake Nme)
       FstPnt (cond (Pt1 (vlax-3d-point Pt1)) (T nil))
       NxtPnt (cond (Pt2 (vlax-3d-point Pt2)) (T nil))
       FltLst (cond (Flt (MeSsetFilter Flt)) (T nil))
 )
 (if Mde
  (if FltLst
   (vla-select CurSet Mde FstPnt NxtPnt (car FltLst) (cadr FltLst))
   (vla-select CurSet Mde FstPnt NxtPnt)
  )
  (if FltLst
   (vla-SelectOnScreen CurSet (car FltLst) (cadr FltLst))
   (vla-SelectOnScreen CurSet)
  )
 )
 CurSet
)

Back  

MeSsetMake - Creates a new selection set or clears an existing one

;
; -- Function MeSsetMake
; Creates a new selection set or clears an existing one.
; Copyright:
;   ©2002 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Nme = Selection set name [STR]
; Return [Type]:
;   > New selection set [VLA-OBJECT]
; Notes:
;   - None
;
(defun MeSsetMake (Nme / SetCol)
 (or Gb:AcO (setq Gb:AcO (vlax-get-acad-object)))
 (or Gb:AcD (setq Gb:AcD (vla-get-activedocument Gb:AcO)))
 (setq SetCol (vla-get-SelectionSets Gb:AcD))
 (if (vl-catch-all-error-p
      (vl-catch-all-apply 'vla-add (list SetCol Nme))
     )
  (vla-clear (vla-Item SetCol Nme))
 )
 (vla-Item SetCol Nme)
)

Back  

MeSsetFilter - Creates a filter for the SelectXxx methods

;
; -- Function MeSsetFilter
; Creates a filter for the SelectXxx methods.
; Copyright:
;   ©2002 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Flt = Dotted pair list '((0 . "Name")...(8 . "Layer")) [LIST]
; Return [Type]:
;   > List of two arrays '(TypArr DatArr) [LIST]
; Notes:
;   - None
;
(defun MeSsetFilter (Flt)
 (mapcar
 '(lambda (Typ Dat) (MeListToArray Dat Typ)) 
  (list vlax-vbInteger vlax-vbVariant)
  (list (mapcar 'car Flt) (mapcar 'cdr Flt))
 )
)

Back  

MeListToArray - Converts a list into an array

;
; -- Function MeListToArray
; Converts a list into an array.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Lst = Standard list [LIST]
;   Typ = Datatype [INT]
;         Constants:
;         - vlax-vbBoolean
;         - vlax-vbDecimal *)
;         - vlax-vbDouble
;         - vlax-vbInteger
;         - vlax-vbLong
;         - vlax-vbObject
;         - vlax-vbSingle
;         - vlax-vbString
;         - vlax-vbVariant
; Return [Type]:
;   > Array [VARIANT]
; Notes:
;   *)Missing data type in Visual LISP, initialize it in your Autoloader.
;   - Can't be used for dotted pair or nested lists.
; 
(defun MeListToArray (Lst Typ)
 (vlax-make-variant
  (vlax-safearray-fill
   (vlax-make-safearray Typ (cons 0 (1- (length Lst))))
   Lst
  )
 )
)

Back  

MeArrayToList - Converts an array into a list

;
; -- Function MeArrayToList
; Converts an array into a list.
; Copyright:
;   ©2000 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Arr = Array [VARIANT]
; Return [Type]:
;   > Standard List [LIST]
;   > nil if array is empty
; Notes:
;   - Can't be used for multidimensional arrays.
; 
(defun MeArrayToList (Arr / TmpVal)
 (setq TmpVal (vlax-variant-value Arr))
 (if (safearray-value TmpVal)
  (vlax-safearray->list TmpVal)
  '()
 )
)

Back  

MeStringSubst - Substitutes one string for another, within a string

;
; -- Function MeStringSubst
; Substitutes one string for another, within a string.
;   ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Fnd = Pattern [STR]
;   Rep = Replace [STR]
;   Stg = String to search [STR]
; Return [Type]:
;   > Modified string [STR]
; Notes:
;   - None
;
(defun MeStringSubst (Fnd Rep Stg / StrLgt StrPos TmpStr)
 (setq TmpStr Stg
       StrLgt (strlen Rep)
       StrPos 0
 )
 (while (and
         (not (eq TmpStr ""))
         (setq StrPos (vl-string-search Fnd TmpStr StrPos))
        )
  (setq TmpStr (vl-string-subst Rep Fnd TmpStr StrPos)
        StrPos (+ StrPos StrLgt)
  )
 )
 TmpStr
)

Back  

MeGetDriveInfos - Returns information's from a drive

;
; -- Function MeGetDriveInfos
; Returns information's from a drive.
; Copyright:
;   ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Drv = Drive character, e.g. "C" or "C:" [STR]
; Return [Type]:
;   > Drive infos '(TotalSize FreeSpace DriveType FileSystem SerialNumber
;                   ShareName VolumeName) [LIST]
;     Explanations:
;     - TotalSize (kB) [REAL]
;       Returns the total space of a drive or network share.
;     - FreeSpace (kB) [REAL]
;       Returns the amount of space available to a user on the specified drive
;       or network share.
;     - DriveType [INT]
;       0 = "Unknown"
;       1 = "Removable"
;       2 = "Fixed"
;       3 = "Network"
;       4 = "CD-ROM"
;       5 = "RAM Disk"
;     - FileSystem [STR]
;       Returns the type of file system in use for the specified drive, e.g.
;       "FAT", "NTFS", "CDFS".
;     - SerialNumber [INT]
;       Returns the serial number used to uniquely identify a disk volume.
;     - ShareName [STR]
;       Returns the network share name (UNC) for the specified drive. If it's
;       not a network drive, ShareName returns a zero-length string (""). 
;     - VolumeName [STR]
;       Returns the volume name of the specified drive.
;   >  0 The drive doesn't exist.
;   > -1 The drive is not ready. For removable-media drives and CD-ROM drives,
;        MeGetDriveInfos returns -1 when the appropriate media is not inserted
;        or not ready for access.
; Notes:
;   - Requires ScrRun.dll (see also notes at top of page).
; 
(defun MeGetDriveInfos (Drv / DrvObj FilSys RetVal)
 (setq FilSys (vlax-create-object "Scripting.FileSystemObject")
       RetVal (cond
               ((= (vlax-invoke FilSys 'DriveExists Drv) 0) 0)
               ((setq DrvObj (vlax-invoke FilSys 'GetDrive Drv))
                (cond
                 ((= (vlax-get DrvObj 'IsReady) 0) -1)
                 ((list
                   (/ (vlax-get DrvObj 'TotalSize) 1000.0)
                   (/ (vlax-get DrvObj 'FreeSpace) 1000.0)
                   (vlax-get DrvObj 'DriveType)
                   (vlax-get DrvObj 'FileSystem)
                   (vlax-get DrvObj 'SerialNumber)
                   (vlax-get DrvObj 'ShareName)
                   (vlax-get DrvObj 'VolumeName)
                  )
                 )
                )
               )
              )
 )
 (if DrvObj (vlax-release-object DrvObj))
 (vlax-release-object FilSys)
 RetVal
)

Back  

MeGetFileInfos - Returns information's from a file

;
; -- MeGetFileInfos
; Returns information's from a file.
; Copyright:
;   ©2002 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Fil = Filename "C:\\Temp\\MyTemp\\Scrap.dwg" [STR]
; Return [Type]:
;   > File infos '(DateCreated DateLastModified DateLastAccessed
;                  Type Size Attributes) [LIST]
;     Explanations:
;     - DateCreated [REAL]
;       Returns serial date/time.
;     - DateLastModified [REAL]
;       Returns serial date/time.
;     - DateLastAccessed [REAL]
;       Returns serial date/time.
;     - Type [STR]
;       Returns the registered file tape, e.g. "AutoCAD Drawing".
;     - Size (kB) [REAL]
;       Returns the size of the file in kB.
;     - Attributes [INT]
;         0 = Normal file, no attributes are set.
;         1 = Read-only file.
;         2 = Hidden file.
;         4 = System file.
;         8 = Disk drive volume label. (not available in MeGetFileInfos)
;        16 = Folder or directory. (not available in MeGetFileInfos)
;        32 = File has changed since last backup.
;        64 = Link or shortcut.
;       128 = Compressed file.
;   > nil If file doesn't exist
; Notes:
;   - Requires ScrRun.dll (see also notes at top of page).
; 
(defun MeGetFileInfos (Fil / FilObj FilSys RetVal)
 (setq FilSys (vlax-create-object "Scripting.FileSystemObject")
       RetVal (cond
               ((= (vlax-invoke FilSys 'FileExists Fil) 0) nil)
               ((setq FilObj (vlax-invoke FilSys 'GetFile Fil))
                (list
                 (vlax-get FilObj 'DateCreated)
                 (vlax-get FilObj 'DateLastModified)
                 (vlax-get FilObj 'DateLastAccessed)
                 (vlax-get FilObj 'Type)
                 (/ (vlax-get FilObj 'Size) 1000.0)
                 (vlax-get FilObj 'Attributes)
                )
               )
               (T nil)
              )
 )
 (if FilObj (vlax-release-object FilObj))
 (vlax-release-object FilSys)
 RetVal
)

Back  

MeCopyFiles - Copies the specified file(s)

;
; -- MeCopyFiles
; Copies the specified file(s).
; Copyright:
;   ©2002 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Src = Source file(s) to copy "C:\\Temp\\AllScrap.*" [STR]
;   Tar = Target directory/file "C:\\Scrap" [STR]
; Return [Type]:
;   > T   MeCopyFiles succeed
;     Nil Error on copy file(s)
; Notes:
;   - Requires ScrRun.dll (see also notes at top of page).
; 
(defun MeCopyFiles (Src Tar / ErrObj FilSys RetVal)
 (setq FilSys (vlax-create-object "Scripting.FileSystemObject")
       ErrObj (vl-catch-all-apply
              'vlax-invoke-method
               (list FilSys 'CopyFile Src Tar :vlax-true)
              )
       RetVal (not (vl-catch-all-error-p ErrObj))
 )
 (vlax-release-object FilSys)
 RetVal
)

Back  

MeDeleteFiles - Deletes the specified file(s)

;
; -- MeDeleteFiles
; Deletes the specified file(s).
; Copyright:
;   ©2002 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Fil = File name(s) to delete "C:\\Temp\\AllScrap.*" [STR]
; Return [Type]:
;   > T   MeDeleteFiles succeed
;     Nil Error on delete file(s)
; Notes:
;   - Requires ScrRun.dll (see also notes at top of page).
; 
(defun MeDeleteFiles (Fil / ErrObj FilSys RetVal)
 (setq FilSys (vlax-create-object "Scripting.FileSystemObject")
       ErrObj (vl-catch-all-apply
              'vlax-invoke-method
               (list FilSys 'DeleteFile Fil :vlax-true)
              )
       RetVal (not (vl-catch-all-error-p ErrObj))
 )
 (vlax-release-object FilSys)
 RetVal
)

Back  

MeCreateDirectory - Creates the specified directory(ies)

;
; -- MeMakeDirectory
; Creates the specified directory(ies).
; Copyright:
;   ©2001 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Dir = Folder to create, e.g. "C:\\Temp\\MyTemp\\AllScrap" [STR]
; Return [Type]:
;   > T   MeMakeDirectory succeed
;     Nil Error on creating directory(ies)
; Notes:
;   - Requires ScrRun.dll (see also notes at top of page).
; 
(defun MeMakeDirectory (Dir / CurDir DrvObj FilSys RetVal TmpLst TmpVal)
 (setq FilSys (vlax-create-object "Scripting.FileSystemObject")
       CurDir (vl-string-right-trim "\\" (vl-string-right-trim "/" Dir))
 )
 (while (/= (setq TmpVal (vl-filename-directory CurDir)) CurDir)
  (setq TmpLst (cons TmpVal TmpLst)
        CurDir TmpVal
  )
 )
 (setq RetVal (cond
               ((= (vlax-invoke FilSys 'DriveExists TmpVal) 0) nil)
               ((setq DrvObj (vlax-invoke FilSys 'GetDrive TmpVal))
                (cond
                 ((= (vlax-get DrvObj 'IsReady) 0) nil)
                 (T
                  (foreach memb TmpLst
                   (cond
                    ((= (vlax-invoke FilSys 'FolderExists memb) -1))
                    ((vlax-invoke FilSys 'CreateFolder memb))
                   )
                  )
                  (cond
                   ((= (vlax-invoke FilSys 'FolderExists Dir) -1))
                   ((vlax-invoke FilSys 'CreateFolder Dir) T)
                   (T nil)
                  )
                 )
                )
               )
              )
 )
 (if DrvObj (vlax-release-object DrvObj))
 (vlax-release-object FilSys)
 RetVal
)

Back  

MeDelDirectory - Deletes the specified directory

;
; -- MeDelDirectory
; Deletes the specified directory.
; Copyright:
;   ©2002 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Dir = Folder to delete "C:\\Temp\\MyTemp\\AllScrap" [STR]
; Return [Type]:
;   > T   MeDelDirectory succeed
;     Nil Error on deleting directory
; Notes:
;   - Requires ScrRun.dll (see also notes at top of page).
; 
(defun MeDelDirectory (Dir / FilSys RetVal)
 (setq FilSys (vlax-create-object "Scripting.FileSystemObject")
       RetVal (cond
               ((= (vlax-invoke FilSys 'FolderExists Dir) 0) nil)
               (T (vlax-invoke FilSys 'DeleteFolder Dir :vlax-true) T)
              )
 )
 (vlax-release-object FilSys)
 RetVal
)

Back  

MeListNetworkDrives - Returns a list of all mapped network drives with UNC...

;
; -- Function MeListNetworkDrives
; Returns a list of all mapped network drives with UNC path.
; Copyright:
;   ©2005 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   --- = 
; Return [Type]:
;   > List of mapped drives '(("X:" . "\\\\Server\\Xpath")...) [LIST]
; Notes:
;   - Requires ScrRun.dll (see also notes at top of page).
;
(defun MeListNetworkDrives ( / DrvCol ItmCnt RetVal WsnObj)
 (setq WsnObj (vlax-create-object "WScript.Network")
       DrvCol (vlax-invoke WsnObj 'EnumNetworkDrives)
       ItmCnt 0
 )
 (repeat (/ (vlax-invoke DrvCol 'Count) 2)
  (setq RetVal (cons
                (cons
                 (strcase (vla-Item DrvCol ItmCnt))
                 (vla-Item DrvCol (1+ ItmCnt))
                )
                RetVal
               )
        ItmCnt (+ ItmCnt 2)
  )
 )
 (vlax-release-object WsnObj)
 (reverse RetVal)
)

Back  

MeRemapNetworkDrives - Remaps a network drive to another drive letter

;
; -- Function MeRemapNetworkDrive
; Remaps a network drive to another drive letter.
; Copyright:
;   ©2005 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Old = Old drive letter, e.g. "X:" [STR]
;   New = New drive letter, e.g. "Y:" [STR]
; Return [Type]:
;   > True: Remapping successful
;   > False: Remapping failed
; Notes:
;   - Requires ScrRun.dll (see also notes at top of page).
;
(defun MeRemapNetworkDrive (Old New / OldUnc RetVal WsnObj)
 (setq WsnObj (vlax-create-object "WScript.Network")
       OldUnc (cdr (assoc (strcase Old) (MeListNetworkDrives)))
 )
 (cond
  ((vl-catch-all-apply
    'vlax-invoke
    (list WsnObj 'RemoveNetworkDrive Old :vlax-true :vlax-true)
   )
  )
  ((vl-catch-all-apply
    'vlax-invoke
    (list WsnObj 'MapNetworkDrive New OldUnc :vlax-true)
   )
  )
  ((setq RetVal T))
 )
 (vlax-release-object WsnObj)
 RetVal
)

Back  

MeCreateShortCut - Creates a shortcut to AutoCAD with the appropriate...

;
; -- Function MeCreateShortCut
; Creates a shortcut to AutoCAD with the appropriate parameters on the desktop.
; Copyright:
;   ©2002 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Scn = Shortcut name, "MyShortCut" [STR]
;   Pro = Profile name, "MyProfile" [STR]
;   Icn = (Path)Filename of the icon, "c:\\MyPath\\MyIcon.ico" [STR] 1)
; Return [Type]:
;   > Shortcut path if succeed [STR]
;   > Nil on error
; Notes:
;   1) If nil, AutoCAD's first internal icon is used
;   - Requires ScrRun.dll (see also notes at top of page).
;
(defun MeCreateShortCut (Scn Pro Icn / DskPth IcnPar ExeFil RetVal ShoCut
                                       SpcFld WscObj)
 (setq ExeFil (findfile "acad.exe")
       IcnPar (cond (Icn) ((strcat ExeFil ", 0")))
       WscObj (vlax-create-object "WScript.Shell")
       RetVal (cond
               ((setq SpcFld (vlax-get WscObj 'SpecialFolders))
                (setq DskPth (strcat
                              (vla-Item SpcFld "Desktop")
                              "\\" Scn ".lnk"
                             )
                      ShoCut (vlax-invoke WscObj 'CreateShortcut DskPth)
                )
                (vlax-put-property ShoCut 'TargetPath ExeFil)
                (vlax-put-property ShoCut 'Arguments (strcat "/p " Pro))
                (vlax-put-property ShoCut 'IconLocation IcnPar)
                (vla-save ShoCut)
                (findfile DskPth)
               )
               (T Nil)
              )
 )
 (vlax-release-object WscObj)
 RetVal
)

Back  

MeGetShortCutTargPaths - Returns all shortcut target paths according to the...

;
; -- Function MeGetShortCutTargPaths
; Returns all shortcut target paths according to the arguments.
; Copyright:
;   ©2004 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Pth = Shortcut path "c:\\MyPath" [STR]
;   Flt = Filter (DOS pattern), "*.dwg" [STR]
; Return [Type]:
;   > List of shortcut paths if succeed [LIST]
;   > Nil if nothing found
; Notes:
;   - Requires ScrRun.dll (see also notes at top of page).
;
(defun MeGetShortCutTargetPaths (Pth Flt / RetVal ShoCut TmpPth WscObj)
 (setq WscObj (vlax-create-object "WScript.Shell"))
 (foreach Fil (vl-directory-files Pth (strcat Flt ".lnk") 1)
  (setq TmpPth (strcat Pth "\\" Fil)
        ShoCut (vlax-invoke-method WscObj 'CreateShortcut TmpPth)
        RetVal (cons (vlax-get-property ShoCut 'TargetPath) RetVal)
  )
 )
 (vlax-release-object WscObj)
 RetVal
)

Back  

MeGetShortName - Returns the short path/name used by programs that...

;
; -- MeGetShortName
; Returns the short path/name used by programs that require the earlier 8.3
; file naming convention.
; Copyright:
;   ©2004 MENZI ENGINEERING GmbH, Switzerland
; Arguments [Type]:
;   Fil = Filename "C:\\Program Files\\ScrapFolder\\ScrapInit.dll" [STR]
; Return [Type]:
;   > Short path/name [STR]
;   > Nil if file doesn't exist
; Notes:
;   - Requires ScrRun.dll (see also notes at top of page).
;
(defun MeGetShortName (Fil / FilObj FilSys RetVal)
 (setq FilSys (vlax-create-object "Scripting.FileSystemObject")
       RetVal (cond
               ((= (vlax-invoke FilSys 'FileExists Fil) 0) nil)
               ((setq FilObj (vlax-invoke FilSys 'GetFile Fil))
                (vlax-get FilObj 'ShortPath)
               )
               (T nil)
              )
 )
 (if FilObj (vlax-release-object FilObj))
 (vlax-release-object FilSys)
 RetVal
)

Back  

AcadDoc.lsp - Reactor sample

;
; == AcadDoc.lsp ==============================================================
; Sets a Command Reactor to set newly created viewports to a certain Layer.
; Load 'MeScrollDocs' with each document. 
; Copyright:
;   ©2000-2005 MENZI ENGINEERING GmbH, Switzerland
; Notes:
;   - None
; 
; -- Initialize ActiveX support -----------------------------------------------
(vl-load-com)
;
; - Set missing Datatype
(setq vlax-vbDecimal 14)
;
; - Preload document-based AutoLISP routines
(load "MeScrollDocs")
;;; load others...
;
; -- Reactors -----------------------------------------------------------------
;
; - If not set, initialize DocManager-Reactor
(or Gb:ReaDma
 (setq Gb:ReaDma (VLR-DocManager-Reactor
                  nil
                 '(
                   (:VLR-documentToBeDestroyed . MeDocToBeDestroyedCallbacks)
                  )
                 )
 )
)
;
; - If not set, initialize Command-Reactor
(or Gb:ReaCom
 (setq Gb:ReaCom (VLR-Command-Reactor
                  nil
                 '(
                   (:VLR-commandEnded . MeCommandEndedCallbacks)
                  )
                 )
 )
)
;
; -- Notifications ------------------------------------------------------------
;
; - CommandEnded notifications
(defun MeCommandEndedCallbacks (Rea Arg)
 (MeDoCmdEndedStuff Arg)
 ;;; other functions...
 (princ)
)
;
; - DocToBeDestroyed notification
(defun MeDocToBeDestroyedCallbacks (Rea Arg)
 ;;; other functions...
 (MeDoCloseStuff)
 (princ)
)
;
; -- Subs ---------------------------------------------------------------------
;
; - Command ended function
(defun MeDoCmdEndedStuff (Arg / CurCmd CurEnt CurSet FltLst LayNme)
 (setq CurCmd (strcase (car Arg)))
 (cond
  ((wcmatch CurCmd "*VPORTS,MVIEW")
   (setq LayNme "VportLayer" ;Set the desired Vport Layer name (must exist)
         FltLst (list '(0 . "VIEWPORT") (cons 8 (strcat "~" LayNme)))
   )
   (if (tblsearch "LAYER" LayNme)
    (progn
     (setq CurSet (ssget "X" FltLst))
     (while (setq CurEnt (ssname CurSet 0))
      (vla-put-layer (vlax-ename->vla-object CurEnt) LayNme)
      (ssdel CurEnt CurSet)
     )
    )
    (alert
     (strcat
      " Viewport Layer '" LayNme
      "' not found - the current Layer is used. "
     )
    )
   )
  )
  ;;; other command ended dependent stuff...
 )
 (princ)
)
; - Reactor cleanup function
(defun MeDoCloseStuff ( / VarLst)
 (setq VarLst (MeGetReaVars))
 (mapcar 'VLR-remove (mapcar 'eval VarLst))
 (mapcar '(lambda (l) (set l nil)) VarLst)
 (princ)
)
; - Collect global reactor variables Gb:Rea*
(defun MeGetReaVars ( / RetVal)
 (foreach memb (atoms-family 1)
  (if (wcmatch (strcase memb) "GB:REA*")
   (setq RetVal (cons (read memb) RetVal))
  )
 )
 RetVal
)

(princ)
;
; == End AcadDoc.lsp ==========================================================

Back  

Free Programs

File name Description Ver

BreakGapsAtEdge.zip

Multiple break at edge function

15+

ChgRad.zip

Function to change the radius of circles

14+

CopyPlineSeg.zip

Copies a segment of a Polyline

15+

CountText.zip

Counts all text occurrences in a drawing

14+

DimPoly.zip

Creates Polyline/Spline dimensions

15+

DrawArcLine.zip

Function to draw an 'arced' line along objects

15+

Draw3DPipe.zip

Draws a 3D pipe by shape and path

15+

DrawDiags.zip

Function to draw 2 diagonals in a closed polygon

15+

DrawGrassBlades.zip

Draws 'Grass blades' on a PolygonMesh

15+

DrawVptBoundary.zip

Draws a Viewport boundary in model space

15+

GetLength.zip

Gets the total length of all selected objects

15+

GetTrueColor.zip

Displays all color information's of an object

16+

ItemIndex.zip

Item numbering with numbers or letters

14+

MultiLead.zip

Draws multiple leader with arrow or circle

15+

MultiOffset.zip

Offsets entities to both sides of the original entity

15+

Triangle.zip

Collection of triangle functions

10+

Bei Problemen oder Fragen zu unserer Webseite kontaktieren Sie bitte: Webmaster
Copyright © 2001-2013 MENZI ENGINEERING GmbH Last modified: 18. September 2013