Fillet polyline with arc not working

Fillet polyline with arc not working

eakos1
Advocate Advocate
295 Views
10 Replies
Message 1 of 11

Fillet polyline with arc not working

eakos1
Advocate
Advocate

If a polyline ended in an arc it is not possible make the fillet with an arc, it gives always the respond: Cannot fillet between these two entities. This is very annoying, we have to do it very often. 


Just an example. 

eakos1_0-1757083876674.png

Even if I draw two arcs but one of them is polyline the fillet isn't working. 

eakos1_1-1757084250670.png

 



Do someone wrote a lisp for it? I tried to find on the net but with no result. 

 

0 Likes
296 Views
10 Replies
Replies (10)
Message 2 of 11

Kent1Cooper
Consultant
Consultant

This has always been a limitation.  Until they decide to change that, it's a little less immediate, but EXTEND and TRIM can get you where you want to go [including the appropriate Edge-extension setting].  If you need a non-zero Fillet radius, you can achieve that with CIRCLE's Tangent-Tangent-Radius option and then some Trimming.  Or if there are no widths involved [as there are not in your examples], you can EXPLODE a Polyline, do the FILLET operation(s), and rejoin the results into a Polyline again.

[But no, I don't have anything like a routine to offer.]

Kent Cooper, AIA
0 Likes
Message 3 of 11

eakos1
Advocate
Advocate

I've just made the code myself.
After selection of a LWPOLYLINE you can select a LINE/ARC/LWPOLYLINE and the program can make the fillet, finally the program join them to one polyline. 

 

0 Likes
Message 4 of 11

CADaSchtroumpf
Advisor
Advisor

Wouldn't it be easier to do the opposite instead of EXPLODE to JOIN later, make rather a PEDIT on Arc or Line?

Example:

(defun C:fillet_pline&line ( / ss1 ent1 pt_sel1 ss2 ent2 typ_ent pt_sel2)
  (princ "\nSelect a LWPOLYLINE: ")
  (while
    (not
      (setq ss1
        (ssget "_+.:E:S"
          (list
            (cons 0 "*POLYLINE")
            (cons -4 "<NOT")
              (cons -4 "&") (cons 70 112)
            (cons -4 "NOT>")
          )
        )
      )
    )
  )
  (setq
    ent1 (ssnamex ss1 0)
    pt_sel1 (cadar (cdddar ent1))
  )
  (princ "\nSelect a LINE/ARC/LWPOLYLINE: ")
  (while
    (not
      (setq ss2
        (ssget "_+.:E:S"
          (list
            (cons -4 "<AND")
              (cons 0 "*POLYLINE,LINE,ARC")
              (cons -4 "<NOT")
                (cons -4 "&") (cons 70 112)
              (cons -4 "NOT>")
            (cons -4 "AND>")
          )
        )
      )
    )
  )
  (setq
    ent2 (ssnamex ss2 0)
    typ_ent (cdr (assoc 0 (entget (cadar ent2))))
    pt_sel2 (cadar (cdddar ent2))
  )
  (cond
    ((member typ_ent '("LINE" "ARC"))
      (command "_.pedit" pt_sel2 "_yes" "")
    )
  )
  (command "_.fillet" pt_sel1 pt_sel2)
  (prin1)
)
0 Likes
Message 5 of 11

Sea-Haven
Mentor
Mentor

The issue of FILLET not working has been in Acad since it first came out. A simple example is two arcs add a third arc in between the two arcs by using fillet, It often draws a "S". Other software has purpose written programs to get around this problem, they existed back in the 80's. As suggested by @Kent1Cooper using the Circle TTR option is often the only way to get a result. Bottom is original two arcs, middle is circle TTR, top is fillet.

 

 

SeaHaven_0-1757378942129.png

 

@CADaSchtroumpf tried code and got an error I use Bricscad normally.

(setq
    ent1 (ssnamex ss1 0)
    pt_sel1 (cadar (cdddar ent1))
  )

; ----- Error around expression -----
; (CDDDAR ENT1)
;
; error : bad argument type <-1> ; expected <CONS> at [cdr]

 

 

 

0 Likes
Message 6 of 11

eakos1
Advocate
Advocate

This code is very simple but not works well, because not considers which side is the start and end point of the polyline, and it doesn't matter. 

I've mad for me 4 possible combinations. 

eakos1_0-1757396925415.png

Your code make the fillet in certain cases the wrong way. So I think there is no other way, always should be checked were is the selection point and the relative positions of the to polylines.  

eakos1_1-1757396974628.png        eakos1_2-1757397014286.png

 

    

 

 

0 Likes
Message 7 of 11

komondormrex
Mentor
Mentor

@eakos1 

have you tried that simple one

(command "_fillet" "_t" "_t" pause pause)

 

0 Likes
Message 8 of 11

eakos1
Advocate
Advocate

Not always works.

 

eakos1_0-1757489223331.png    eakos1_1-1757489250803.png

 

But intresting, in case of polyline this simple code not works, only with ARC and LINE. 

My idea was to draw the fillet without trim and with entlast get the name and with trim just trim the polylines. But in case of polylines not draws the arc. 

(setq a (entsel))
(setq b (entsel))
(command "_fillet" "_t" "_n" a b )

(entlast)

(trim ......)

 

 

0 Likes
Message 9 of 11

komondormrex
Mentor
Mentor

which version of autocad do you use? in 26 there is the only pair when fillet doesn't come when you filleting an arc with pline's line segment. other pairs fillet okay.

komondormrex_0-1757526227780.png

komondormrex_1-1757526342102.pngkomondormrex_2-1757526393143.png

komondormrex_3-1757526525299.png

 

 

 

0 Likes
Message 10 of 11

Sea-Haven
Mentor
Mentor

Re new arc is upside down found this today for something else, if using Circle TTR picking clockwise or anticlockwise will draw in the two different directions. Does not work for plain Fillet command. 

 

0 Likes
Message 11 of 11

eakos1
Advocate
Advocate

I use AutoCAD 2015

0 Likes