<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Lisp routine breaks if xrefs are loaded in AutoCAD Forum</title>
    <link>https://forums.autodesk.com/t5/autocad-forum/lisp-routine-breaks-if-xrefs-are-loaded/m-p/5529811#M338249</link>
    <description>&lt;P&gt;I have a lisp routine I use to "print" the&amp;nbsp;layers are in a drawing, but for some reason it only works in drawings without xrefs. Once an xref is loaded, the formatting gets messed up. Anyone know what I'm doing wrong with my code? This seems to happen regardless of whether it's a brand new file or an old one. This also happens in both vanilla AutoCAD &amp;amp; ACA 2015&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;;;
;; Build Layer Display
;; 
;; Draw a line and add text "Layer Name" and "Layer Description" for every layer in a drawing.
;; 

(vl-load-com)

(Defun C:BLD ()  ;; append after it works (/ dx1 dx2 dx3 dx4 dyy dyi adoc laycoll lay layn layd)

  (setq dx1 0 dx2 96 dx3 102 dx4 234)
  (setq dyy 0 dyi 24)
  (if(not(tblsearch "STYLE" "ARIAL"))
    (command "-style" "Arial" "Arial" "0" "1" "0" "n" "n")
  )
  (setq oldStyle (getvar "textstyle"))
  (setvar "textstyle" "Arial")
  (setq oldLay (getvar "clayer"))
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (setq laycoll (vla-get-layers adoc))
  (vlax-for lay laycoll
    (setq layn (vla-get-Name lay))
    (setq layd (vla-get-Description lay))
    (setvar "clayer" layn)
    (command "line" (list dx1 dyy) (list dx2 dyy) "")
    (command "text" "s" "Arial" "j" "ml" (list dx3 dyy) "8" "0" layn)
    (command "text" "j" "ml" (list dx4 dyy) "8" "0" layd)
    (setq dyy(cadr(polar (list dx1 dyy) (* pi 1.5) dyi)))
  )
  (setvar "textstyle" oldStyle)
  (setvar "clayer" oldLay)
  (princ)
)&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;Expected results (no xrefs):&lt;/P&gt;&lt;P&gt;&lt;IMG alt="xref.png" border="0" title="xref.png" src="https://forums.autodesk.com/t5/image/serverpage/image-id/156925iD6F87B56E21D2CCA/image-size/original?v=mpbl-1&amp;amp;px=-1" /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;"Broken" results (xrefs loaded):&lt;/P&gt;&lt;P&gt;&lt;IMG alt="sheet.png" border="0" title="sheet.png" src="https://forums.autodesk.com/t5/image/serverpage/image-id/156926i8548AA82BAC90256/image-size/original?v=mpbl-1&amp;amp;px=-1" /&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 05 Mar 2015 16:43:30 GMT</pubDate>
    <dc:creator>pyreflos</dc:creator>
    <dc:date>2015-03-05T16:43:30Z</dc:date>
    <item>
      <title>Lisp routine breaks if xrefs are loaded</title>
      <link>https://forums.autodesk.com/t5/autocad-forum/lisp-routine-breaks-if-xrefs-are-loaded/m-p/5529811#M338249</link>
      <description>&lt;P&gt;I have a lisp routine I use to "print" the&amp;nbsp;layers are in a drawing, but for some reason it only works in drawings without xrefs. Once an xref is loaded, the formatting gets messed up. Anyone know what I'm doing wrong with my code? This seems to happen regardless of whether it's a brand new file or an old one. This also happens in both vanilla AutoCAD &amp;amp; ACA 2015&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;;;
;; Build Layer Display
;; 
;; Draw a line and add text "Layer Name" and "Layer Description" for every layer in a drawing.
;; 

(vl-load-com)

(Defun C:BLD ()  ;; append after it works (/ dx1 dx2 dx3 dx4 dyy dyi adoc laycoll lay layn layd)

  (setq dx1 0 dx2 96 dx3 102 dx4 234)
  (setq dyy 0 dyi 24)
  (if(not(tblsearch "STYLE" "ARIAL"))
    (command "-style" "Arial" "Arial" "0" "1" "0" "n" "n")
  )
  (setq oldStyle (getvar "textstyle"))
  (setvar "textstyle" "Arial")
  (setq oldLay (getvar "clayer"))
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (setq laycoll (vla-get-layers adoc))
  (vlax-for lay laycoll
    (setq layn (vla-get-Name lay))
    (setq layd (vla-get-Description lay))
    (setvar "clayer" layn)
    (command "line" (list dx1 dyy) (list dx2 dyy) "")
    (command "text" "s" "Arial" "j" "ml" (list dx3 dyy) "8" "0" layn)
    (command "text" "j" "ml" (list dx4 dyy) "8" "0" layd)
    (setq dyy(cadr(polar (list dx1 dyy) (* pi 1.5) dyi)))
  )
  (setvar "textstyle" oldStyle)
  (setvar "clayer" oldLay)
  (princ)
)&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;Expected results (no xrefs):&lt;/P&gt;&lt;P&gt;&lt;IMG alt="xref.png" border="0" title="xref.png" src="https://forums.autodesk.com/t5/image/serverpage/image-id/156925iD6F87B56E21D2CCA/image-size/original?v=mpbl-1&amp;amp;px=-1" /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;"Broken" results (xrefs loaded):&lt;/P&gt;&lt;P&gt;&lt;IMG alt="sheet.png" border="0" title="sheet.png" src="https://forums.autodesk.com/t5/image/serverpage/image-id/156926i8548AA82BAC90256/image-size/original?v=mpbl-1&amp;amp;px=-1" /&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 05 Mar 2015 16:43:30 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/autocad-forum/lisp-routine-breaks-if-xrefs-are-loaded/m-p/5529811#M338249</guid>
      <dc:creator>pyreflos</dc:creator>
      <dc:date>2015-03-05T16:43:30Z</dc:date>
    </item>
    <item>
      <title>Re: Lisp routine breaks if xrefs are loaded</title>
      <link>https://forums.autodesk.com/t5/autocad-forum/lisp-routine-breaks-if-xrefs-are-loaded/m-p/5529948#M338250</link>
      <description>&lt;P&gt;Hi pyreflos,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;(Defun C:BLD ()&lt;/P&gt;
&lt;P&gt;(setq osm (getvar 'OSMODE))&lt;/P&gt;
&lt;P&gt;(setvar 'OSMODE 0)&lt;/P&gt;
&lt;P&gt;;;;t&lt;SPAN class="hps"&gt;he&lt;/SPAN&gt; &lt;SPAN class="hps"&gt;rest of the code&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="hps"&gt;(setvar 'OSMODE osm)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="hps"&gt;&amp;nbsp; (princ)&lt;BR /&gt;)&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="hps"&gt;And you can't set as current 'Xref-dependent layers'...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN class="hps"&gt;Hope this helps, &lt;BR /&gt;Henrique&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 05 Mar 2015 17:56:59 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/autocad-forum/lisp-routine-breaks-if-xrefs-are-loaded/m-p/5529948#M338250</guid>
      <dc:creator>hmsilva</dc:creator>
      <dc:date>2015-03-05T17:56:59Z</dc:date>
    </item>
    <item>
      <title>Re: Lisp routine breaks if xrefs are loaded</title>
      <link>https://forums.autodesk.com/t5/autocad-forum/lisp-routine-breaks-if-xrefs-are-loaded/m-p/5530091#M338251</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/75977"&gt;@hmsilva&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;&lt;SPAN class="hps"&gt;And you can't set as current 'Xref-dependent layers'...&lt;/SPAN&gt;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;We&amp;nbsp;should also take into account the layer state, if frozen, will give an error, and to skip 'Xref-dependent layers', perhaps something like this&lt;/P&gt;
&lt;PRE&gt;;;
;; Build Layer Display
;; 
;; Draw a line and add text "Layer Name" and "Layer Description" for every layer in a drawing.
;; 
(vl-load-com)
(Defun C:BLD ();; append after it works (/ dx1 dx2 dx3 dx4 dyy dyi adoc freezelst laycoll lay layn layd osm)
  (setq osm (getvar 'OSMODE))
  (setvar 'OSMODE 0)
  (setq dx1 0 dx2 96 dx3 102 dx4 234)
  (setq dyy dyi 24)
  (if (not (tblsearch "STYLE" "ARIAL"))
    (command "-style" "Arial" "Arial" "0" "1" "0" "n" "n")
  )
  (setq oldStyle (getvar "textstyle"))
  (setvar "textstyle" "Arial")
  (setq oldLay (getvar "clayer"))
  (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
  (setq laycoll (vla-get-layers adoc))
  (vlax-for lay laycoll
    (setq layn (vla-get-Name lay))
    (if (not (wcmatch layn "*|*"))
      (progn
        (if (= (vla-get-freeze lay) :vlax-true)
          (progn
            (setq freezelst (cons (vla-get-name lay) freezelst))
            (vla-put-freeze lay :vlax-false)
          )
        )
        (setq layd (vla-get-Description lay))
        (setvar "clayer" layn)
        (command "line" (list dx1 dyy) (list dx2 dyy) "")
        (command "text" "s" "Arial" "j" "ml" (list dx3 dyy) "8" "0" layn)
        (command "text" "j" "ml" (list dx4 dyy) "8" "0" layd)
        (setq dyy (cadr (polar (list dx1 dyy) (* pi 1.5) dyi)))
      )
    )
  )
  (if freezelst
    (vlax-for lay laycoll
      (if (vl-position (vla-get-name lay) freezelst)
        (vla-put-freeze lay :vlax-true)
      )
    )
  )

  (setvar 'OSMODE osm)
  (setvar "textstyle" oldStyle)
  (setvar "clayer" oldLay)
  (princ)
)&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And for AUTO/Visual LISP &lt;SPAN class="hps"&gt;questions&lt;/SPAN&gt;, &lt;SPAN class="hps"&gt;should be easier&lt;/SPAN&gt; to get help at the &lt;STRONG&gt;&lt;A href="https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/bd-p/130" target="_blank"&gt;Visual LISP AutoLISP and General Customization forum&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope this helps, &lt;BR /&gt;Henrique&lt;/P&gt;</description>
      <pubDate>Thu, 05 Mar 2015 19:42:05 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/autocad-forum/lisp-routine-breaks-if-xrefs-are-loaded/m-p/5530091#M338251</guid>
      <dc:creator>hmsilva</dc:creator>
      <dc:date>2015-03-05T19:42:05Z</dc:date>
    </item>
  </channel>
</rss>

