Jump to content

need help with arcs in script


jimpcfd

Recommended Posts

Hi all decided to post this here, did have it posted in scripts , Renderman suggested that a Lisp routine might be a better way to go.

So here was my original post...

hi

i'm tying to create a script with arcs in, i get arc data from a text file cvs format, which looks like this = start of arc 190,0 end of arc 200,10 centre of arc 190,10 as you can see it's a 10mm radius i think these are absolute measurements .

 

i'm not sure on the format for 3 pt arcs in scripts ?

 

his is the full spec

 

L,0,10,0,190

A,190,0,200,10,190,10,1

L,200,10,200,90A

A,200,90,190,100,190,90,1

L,190,100,10,100

A,10,100,0,90,10,90,1

L,0,90,0,10

A,0,10,10,0,10,10,1

 

 

l = line start x,start y, end x,end y.

 

A = arc start x, start y, end x, end y, centre , centre y.

1 means counterclockwise and 0 would mean clockwise

 

cheers

jimpcfd

Link to comment
Share on other sites

Are you trying to write a LISP program or a Script?

 

Hi Lee i tried doing a script file had no problem with the Lines but had problems with the arcs, tried 3pt arcs which seems to be very similar to the CSV file but had no luck with that.

So maybe a lisp routine would do the job.

 

 

cheers

Jim

Link to comment
Share on other sites

Maybe like this :

 


[b][color=BLACK]([/color][/b]defun c:test [b][color=FUCHSIA]([/color][/b]/ file rf data nl p1 p2 ce sp ep[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]not file[b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]setq file [b][color=MAROON]([/color][/b]if csv_file
                      [b][color=GREEN]([/color][/b]getfiled [color=#2f4f4f]"CSV File to Read"[/color] csv_file [color=#2f4f4f]"csv"[/color] 2[b][color=GREEN])[/color][/b]
                      [b][color=GREEN]([/color][/b]getfiled [color=#2f4f4f]"CSV File to Read"[/color] [color=#2f4f4f]""[/color] [color=#2f4f4f]"csv"[/color] 2[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]setq csv_file file[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq rf [b][color=NAVY]([/color][/b]open file [color=#2f4f4f]"r"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq nl [b][color=MAROON]([/color][/b]read-line rf[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]setq data [b][color=MAROON]([/color][/b]cons [b][color=GREEN]([/color][/b]db_sds2l [color=#2f4f4f]","[/color] nl[b][color=GREEN])[/color][/b] data[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]close rf[b][color=FUCHSIA])[/color][/b]

 [b][color=FUCHSIA]([/color][/b]foreach e data
    [b][color=NAVY]([/color][/b]cond [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= [color=#2f4f4f]"L"[/color] [b][color=BLUE]([/color][/b]nth 0 e[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
           [b][color=GREEN]([/color][/b]entmake [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"LINE"[/color][b][color=RED])[/color][/b]
                          [b][color=RED]([/color][/b]list 10 [b][color=PURPLE]([/color][/b]atof [b][color=TEAL]([/color][/b]nth 1 e[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]atof [b][color=TEAL]([/color][/b]nth 2 e[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] 0[b][color=RED])[/color][/b]
                          [b][color=RED]([/color][/b]list 11 [b][color=PURPLE]([/color][/b]atof [b][color=TEAL]([/color][/b]nth 3 e[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]atof [b][color=TEAL]([/color][/b]nth 4 e[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] 0[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
          [b][color=MAROON]([/color][/b][b][color=GREEN]([/color][/b]= [color=#2f4f4f]"A"[/color] [b][color=BLUE]([/color][/b]nth 0 e[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
           [b][color=GREEN]([/color][/b]setq p1 [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]atof [b][color=PURPLE]([/color][/b]nth 1 e[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]atof [b][color=PURPLE]([/color][/b]nth 2 e[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] 0[b][color=BLUE])[/color][/b]
                 p2 [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]atof [b][color=PURPLE]([/color][/b]nth 3 e[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]atof [b][color=PURPLE]([/color][/b]nth 4 e[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] 0[b][color=BLUE])[/color][/b]
                 ce [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]atof [b][color=PURPLE]([/color][/b]nth 5 e[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]atof [b][color=PURPLE]([/color][/b]nth 6 e[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] 0[b][color=BLUE])[/color][/b]
                 sp [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]minusp [b][color=PURPLE]([/color][/b]atoi [b][color=TEAL]([/color][/b]nth 7 e[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] p2 p1[b][color=BLUE])[/color][/b]
                 ep [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]minusp [b][color=PURPLE]([/color][/b]atoi [b][color=TEAL]([/color][/b]nth 7 e[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] p1 p2[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
           [b][color=GREEN]([/color][/b]entmake [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"ARC"[/color][b][color=RED])[/color][/b]
                          [b][color=RED]([/color][/b]cons 10 ce[b][color=RED])[/color][/b]
                          [b][color=RED]([/color][/b]cons 40 [b][color=PURPLE]([/color][/b]distance ce sp[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
                          [b][color=RED]([/color][/b]cons 50 [b][color=PURPLE]([/color][/b]angle ce sp[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
                          [b][color=RED]([/color][/b]cons 51 [b][color=PURPLE]([/color][/b]angle ce ep[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

[color=#8b4513];;;DELIMITED STRING TO LIST[/color]
[color=#8b4513];;;ARG -> Single Delimiter Character, String To Convert[/color]
[color=#8b4513];;;RET -> List or nil[/color]
[b][color=BLACK]([/color][/b]defun db_sds2l [b][color=FUCHSIA]([/color][/b]d s / sl f sv dlist slist[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq sl [b][color=NAVY]([/color][/b]strlen s[b][color=NAVY])[/color][/b]
        f 0[b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq dlist [b][color=NAVY]([/color][/b]list 0[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]<= [b][color=MAROON]([/color][/b]setq f [b][color=GREEN]([/color][/b]1+ f[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] sl[b][color=NAVY])[/color][/b]
        [b][color=NAVY]([/color][/b]if [b][color=MAROON]([/color][/b]= d [b][color=GREEN]([/color][/b]substr s f 1[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]setq dlist [b][color=GREEN]([/color][/b]cons f dlist[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq dlist [b][color=NAVY]([/color][/b]cons [b][color=MAROON]([/color][/b]1+ sl[b][color=MAROON])[/color][/b] dlist[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]setq dlist [b][color=NAVY]([/color][/b]reverse dlist[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]repeat [b][color=NAVY]([/color][/b]1- [b][color=MAROON]([/color][/b]length dlist[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
         [b][color=NAVY]([/color][/b]setq sv [b][color=MAROON]([/color][/b]substr s [b][color=GREEN]([/color][/b]1+ [b][color=BLUE]([/color][/b]nth 0 dlist[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                            [b][color=GREEN]([/color][/b]- [b][color=BLUE]([/color][/b]nth 1 dlist[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]nth 0 dlist[b][color=BLUE])[/color][/b] 1[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
         [b][color=NAVY]([/color][/b]setq slist [b][color=MAROON]([/color][/b]cons sv slist[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
         [b][color=NAVY]([/color][/b]setq dlist [b][color=MAROON]([/color][/b]cdr dlist[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
 [b][color=FUCHSIA]([/color][/b]reverse slist[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 

You would have to be extremely consistent with the CSV file format. -David

 

PS : It defaults to your current settings for LAYER CECOLOR THICKNESS CELTYPE etc I did force ELEVATION to 0

Link to comment
Share on other sites

Thanks David

that does a perfect job, as a lisp beginner i can see what some of the routine is doing but i have to say some of it is beyond me at the moment.

 

thanks again

Jim

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...