Fillet polyline with arc not working

Fillet polyline with arc not working

eakos1
Advocate Advocate
236 Views
6 Replies
Message 1 of 7

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
237 Views
6 Replies
Replies (6)
Message 2 of 7

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 7

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 7

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 7

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 7

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 7

komondormrex
Mentor
Mentor

@eakos1 

have you tried that simple one

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

 

0 Likes