Jump to content

Variable in DXF code


dirkvandonkelaar

Recommended Posts

Hi all,

 

I have a problem with my list, according to the code below.

   (if (null (tblsearch "style" teksthoogte))
     (entmake
       (list
         '(0 . "STYLE")
  '(-3                                     ;; Make the style annotative
           ("AcadAnnotative"
             (1000 . "AnnotativeData")
             (1002 . "{")
             (1070 . 1)
             (1070 . 1)
             (1002 . "}")
           )
  )
         '(100 . "AcDbSymbolTableRecord")
         '(100 . "AcDbTextStyleTableRecord")
         '(2 . teksthoogte)                       ;; Style name
         '(70 . 0)                                ;; Standard flag values (bit-coded values)
         '(40 . 1.                              ;; text height
         '(41 . 1.0)                              ;; width factor
         '(50 . 0.0)                              ;; oblique angle
         '(71 . 0)                                ;; text generation "0" normal text
         '(42 . 0)                                ;; last height used
         '(3 . "Arial.ttf")                       ;; font file name
         '(4 . "")                                ;; bigfont (blank for no)
       )                                          ;; end list
     )                                            ;; end entmake
   )                                              ;; end if

 

When I run this LISP, AutoCAD says:

; error: bad DXF group: (2 . TEKSTHOOGTE)

 

So, my question is: how can i get the variable "teksthoogte" working in this list?

Link to comment
Share on other sites

That's not the solution, when you wrap quotes arrount it, AutoCAD sees it as text, while it needs to be an variable which is set earlier in the LISP.

Link to comment
Share on other sites

Why not?

See if this works (possible problems is non-english letters,

if I remember that right, I have a got same problem once with

german "A" umlaut letter)

Copy paste this snip:

 

(setq teksthoogte "ANNO-Tekst 2.5")
(if (not (tblsearch "style" teksthoogte))
     (entmake
       (list
         '(0 . "STYLE")
  '(-3                                     ;; Make the style annotative
           ("AcadAnnotative"
             (1000 . "AnnotativeData")
             (1002 . "{")
             (1070 . 1)
             (1070 . 1)
             (1002 . "}")
           )
  )
         '(100 . "AcDbSymbolTableRecord")
         '(100 . "AcDbTextStyleTableRecord")
         (cons 2  teksthoogte)                       ;; Style name
         '(70 . 0)                                ;; Standard flag values (bit-coded values)
         '(40 . 1.                              ;; text height
         '(41 . 1.0)                              ;; width factor
         '(50 . 0.0)                              ;; oblique angle
         '(71 . 0)                                ;; text generation "0" normal text
         '(42 . 0)                                ;; last height used
         '(3 . "Arial.ttf")                       ;; font file name
         '(4 . "")                                ;; bigfont (blank for no)
       )                                          ;; end list
     )                                            ;; end entmake
   )                                              ;; end if

Link to comment
Share on other sites

Hi all,

 

Thanks for the replies.

Lee Mac, your thread did not really helped me understanding (maybe 'cause my English is not great).

 

BUT, i've found a solution for my problem.

This is my code now:

   (if (null (tblsearch "style" teksthoogte))
     (entmake
       (list
         '(0 . "STYLE")
  '(-3                                     ;; Make the style annotative
           ("AcadAnnotative"
             (1000 . "AnnotativeData")
             (1002 . "{")
             (1070 . 1)
             (1070 . 1)
             (1002 . "}")
           )
  )
         '(100 . "AcDbSymbolTableRecord")
         '(100 . "AcDbTextStyleTableRecord")
         '(2 . (strcat teksthoogte))              ;; Style name
         '(70 . 0)                                ;; Standard flag values (bit-coded values)
         '(40 . 1.                              ;; text height
         '(41 . 1.0)                              ;; width factor
         '(50 . 0.0)                              ;; oblique angle
         '(71 . 0)                                ;; text generation "0" normal text
         '(42 . 0)                                ;; last height used
         '(3 . "Arial.ttf")                       ;; font file name
         '(4 . "")                                ;; bigfont (blank for no)
       )                                          ;; end list
     )                                            ;; end entmake
   )                                              ;; end if

 

The one thing i did was just replace

'(2 . teksthoogte)

with

'(2 . (strcat teksthoogte))

 

Now, i just wanted to know if it's the right wat to do this.

Link to comment
Share on other sites

The one thing i did was just replace

'(2 . teksthoogte)

with

'(2 . (strcat teksthoogte))

 

The strcat expression will not be evaluated (although strcat is no actually required) since the list is quoted and hence not evaluated (as explained in my thread).

 

Instead, use:

 

(cons 2 teksthoogte)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...