SolidWorks and standards: a considerable delay

Greetings SolidWorkers!

I'm opening this topic because there are questions that come up more and more often about SolidWorks and to which I am far too often (if not always) forced to answer in the negative.

These questions can be generalized with the following formula:

How can I annotate/score my plan according to current standards with SolidWorks?

It is clear that SolidWorks is clearly lagging behind on this point.
Between missing symbols (ex. ISO 25178, ISO 10135, ISO 13715, among others), non-compliant display options (ISO 124-24:2014), impossible annotation combinations (attaching a surface finish symbol to a geometric tolerance frame (ISO 1302-ISO 1101), missing ISO thread classes, toolbox components whose dimensions are not compliant (fortunately CAD BOOSTER is there)...

It took SolidWorks nearly 4 years and many complaints to implement the ISO 21920-1 available in version 2025.

We will slowly but surely use this point as a negotiating lever with our VAR during the next renewal in order to get him to assert our right to a compliant software given its price...

Do others (companies, users) suffer as much from these shortcomings and gaps in this software?

6 Likes

" Solidworks and standards; the huge delay "

4 Likes

I note that you didn't dare to talk about GPS standards. :grinning:
ISO 14638:2014 is a basic ISO GPS standard.

1 Like

If there is the 21920

1 Like

is too strong for you :slight_smile:

1 Like

And again: it took more than ten years and 3 or 4 SRs for them to correct pitch errors on metric threads that are not very common (including the M33 from memory): the pitch given by Solidworks was not in accordance with the ISO pitch.

1 Like

That's why we love him :crazy_face:

2 Likes

Obviously few, if any, BE Representatives who feel at fault on this subject in the use of SolidWorks...

Too bad: I was really hoping to move the subject towards finding ways to escalate this problem to the editor in a more efficient way than through their TTL (with which they themselves must certainly be lost), maybe even include some Visiativ in this discussion.

I will close the subject by the end of the month if the answers collected do not change or if the news tends to confirm that this misalignment with the standards is not a problem overall.

3 Likes

Hello;

I think that we have to deal more with a form of renunciation in the face of the immobility of software publishers on this subject.
On the software side, I think that the prospect of publishers paying several thousand euros or Dollar$ to buy standards every year to apply them a year later on their software is not very " bankable ".

You only have to look at Afnor's rates to realize the sums to be incurred to realize this (I have even just discovered that they sell, by subscription, a system of " deciphering " their own standards).

Multiply these sums by the number of standards per country and then by the number of countries, organizations, commissions, etc. it is exorbitant and endless.

That said, Solidworks should make an effort to offer us a worthy publisher for the symbols and by relying on the community it would be possible to have a catalog worthy of the name rather quickly.

because... In no uncertain terms:

; Format:
;;
;; #<Name of library>,<Description of library>
;; *<Name of symbol>,<Description of symbol>
;; A,LINE xStart,yStart,xEnd,yEnd
;; A,CIRCLE xCenter,yCenter,radius
;; A,ARC xCenter,yCenter,radius,startAngle,endAngle
;; A,SARC xCenter,yCenter,radius,startAngle,endAngle
;; A,TEXT xLowerLeft,yLowerLeft,<letter(s)>
;; A,POLY x1,y1,x2,y2,x3,y3
;; A,BOUND x1,x2
;;
;; Units:
;;
;; All x, y, and radius values are in the symbols grid space (0.0 to 1.0),
;; where 0,0 is the lower left corner and 1,1 is the upper right corner.
;; The grid space is considered to be the height of a character squared.
;; All angle values are in degrees.

-------------------------------------------------------------------------------

It's not very user-fiendly...
(source)

So, well... yes, on the BE Representative side, for lack of anything better, we make do... but we wouldn't be against having a plus...

4 Likes

Improvement idea submitted 2 years ago now: Symbol creation tool

Do you think they would take it badly if I wrote an improvement request like this?

Spend less money on your 3DExperience World events to invest in standards and keep your software up to date.

4 Likes

Hello

I think SW is not the only software with this problem. I am somewhat of the same opinion as @Maclane regarding the cost of the standards that must be followed for a low profitability for the publisher (there are so many specificities depending on the profession).
In my opinion they have put the most " standard " (geometric specifications, surface finishes and welding symbols) after indeed missing some symbols (edges of undefined shapes) but I am not sure that all the ISO GPS principles are applied in the target of SW companies targeted by DS.

3 Likes

Hmmm :thinking: :thinking:... unsure... But be careful, they are still susceptible.
And then... There is only one way to find out. :laughing: :laughing: :laughing:

I'm going to make it borderline off-topic...

Perplexity offers me a Python script (with the ezdxf library) that would supposedly be able to convert a DXF file into a symbol that can be used with the Solidworks *.sym library:

import ezdxf

# Fonction pour normaliser une valeur selon l'étendue min-max à l'intervalle [0,1]
def normalize(value, min_val, max_val):
    return (value - min_val) / (max_val - min_val) if max_val > min_val else 0.0

# Fonction principale de conversion DXF -> fichier .sym
def dxf_to_sym(dxf_path, sym_path):
    # Charger le fichier DXF
    dwg = ezdxf.readfile(dxf_path)
    msp = dwg.modelspace()

    # Récupérer toutes les coordonnées (x,y) pour une normalisation correcte
    coords_x = []
    coords_y = []
    for e in msp:
        if e.dxftype() == 'LINE':
            coords_x.extend([e.dxf.start.x, e.dxf.end.x])
            coords_y.extend([e.dxf.start.y, e.dxf.end.y])
        elif e.dxftype() in ('CIRCLE', 'ARC'):
            coords_x.append(e.dxf.center.x)
            coords_y.append(e.dxf.center.y)
        elif e.dxftype() == 'TEXT':
            coords_x.append(e.dxf.insert.x)
            coords_y.append(e.dxf.insert.y)

    # Définir les bornes min et max
    min_x, max_x = min(coords_x), max(coords_x)
    min_y, max_y = min(coords_y), max(coords_y)

    with open(sym_path, 'w', encoding='utf-8') as file:
        file.write(";; Bibliothèque de symboles générée automatiquement\n")
        file.write("#MySymbols, Bibliothèque personnelle\n")

        # Parcourir les entités pour exporter en format .sym
        for e in msp:
            if e.dxftype() == 'LINE':
                x1 = normalize(e.dxf.start.x, min_x, max_x)
                y1 = normalize(e.dxf.start.y, min_y, max_y)
                x2 = normalize(e.dxf.end.x, min_x, max_x)
                y2 = normalize(e.dxf.end.y, min_y, max_y)
                file.write(f"*LineSymbol,Ligne simple\n")
                file.write(f"A,LINE {x1:.3f},{y1:.3f},{x2:.3f},{y2:.3f}\n")

            elif e.dxftype() == 'CIRCLE':
                cx = normalize(e.dxf.center.x, min_x, max_x)
                cy = normalize(e.dxf.center.y, min_y, max_y)
                # Normalisation du rayon approximative selon largeur (ajustable)
                r = e.dxf.radius / (max_x - min_x) if max_x != min_x else 0
                file.write(f"*CircleSymbol,Cercle simple\n")
                file.write(f"A,CIRCLE {cx:.3f},{cy:.3f},{r:.3f}\n")

            elif e.dxftype() == 'ARC':
                cx = normalize(e.dxf.center.x, min_x, max_x)
                cy = normalize(e.dxf.center.y, min_y, max_y)
                r = e.dxf.radius / (max_x - min_x) if max_x != min_x else 0
                start_angle = int(e.dxf.start_angle)
                end_angle = int(e.dxf.end_angle)
                file.write(f"*ArcSymbol,Arc simple\n")
                file.write(f"A,ARC {cx:.3f},{cy:.3f},{r:.3f},{start_angle},{end_angle}\n")

            elif e.dxftype() == 'TEXT':
                x = normalize(e.dxf.insert.x, min_x, max_x)
                y = normalize(e.dxf.insert.y, min_y, max_y)
                text = e.text.replace(',', '')  # enlever virgules
                file.write(f"*TextSymbol,Texte simple\n")
                file.write(f"A,TEXT {x:.3f},{y:.3f},<{text}>\n")

if __name__ == "__main__":
    dxf_to_sym('votre_fichier.dxf', 'symboles.sym')

Explanations:

ezdxf charge et lit les entités 2D du fichier DXF à partir du "modelspace".

On collecte toutes les coordonnées X et Y de toutes les entités pour calculer les bornes min/max, ce qui permet de normaliser chaque coordonnée entre 0 et 1. Cette normalisation est nécessaire car SolidWorks attend des coordonnées relatives dans la grille de symbole.

On traite les types essentiels : LINE, CIRCLE, ARC, TEXT ; pour chacun, on écrit une ligne dans le format lisible par SolidWorks.
Le rayon d’un cercle ou d’un arc est normalisé aussi, approximativement selon la largeur du dessin.
Le texte est nettoyé pour éviter les virgules incompatibles.
Le fichier .sym produit peut être ajouté à la bibliothèque de SolidWorks et utilisé directement.

And that's where I stop... to date I have never used/created a Python script and am, for the moment, unable to interpret or evaluate the relevance of this script.
Moreover, it is a " direct from AI (Perplexity) " with all the problems inherent in this postulate.
If more adventurous than me want to test this script well ... thank you and good luck...

2 Likes

If it works straight with AI, it's beautiful.

2 Likes

Hello @Maclane
I think it should be possible to adapt this script to vba to convert a SW sketch into a symbol.

For the full year 2024, Dassault Systèmes generated revenue of €6.21 billion, up 5% at constant exchange rates, and net income of €1.2 billion, up 14% compared to 2023.

Finally, can the cost of standards really be an excuse?

On the other hand, by putting oneself in the shoes of an entrepreneur (perhaps a little crazy) who wants to place himself on this market with a new CAD software, are not all these standards (their integration and maintenance) input data for designing such software?

2 Likes

I don't really agree with you on the issue, and I find that you have a really hard time with Dassault on the subject.

Admittedly, the management of standards is not optimal ... But I might as well start from the premise that she will never squeeze it and I can never be anyway. Too many standards specific to each profession/region of work.

On the other hand, what is unfortunate is that starting from this state of affairs, Solidworks has not decided to " open " its software a little so that we can implement autonomously.
In Creo, for example, the representation of the welds was really bad: but the software allowed you to modify the symbols as you pleased, so the problem was quickly solved.

It seems to me to be more relevant to try to fight on this side rather than to want to see all the standards present in Solidworks :slight_smile:

3 Likes

The solution is simple; it would be sufficient for SW to be able to access the databases of the " standardizers " for it to allow the loading of the standards used, including the most recent or modified, without the need for Dassault to update SW, as for libraries of models and data manufacturers/suppliers,

2 Likes

It seems to me that there is a way to modify various symbols via blocks? But it's very opaque.
We tried to put two properties in a bubble, but it was impossible to change the shape. There are possibilities unknown to users that allow us to modify shapes. But the aid is limited to the use of the software.

1 Like