Files
fluencyCAD/main.app/Contents/MacOS/pint/default_en.txt
bklronin 11d053fda4 Fix sketcher mode handling to prevent unintended line creation during drag operations
Major changes:
- Fixed right-click handler to directly set mode to NONE instead of relying on main app signal handling
- Added safety checks in left-click handler to prevent drawing when no draggable point is found in NONE mode
- Enhanced mode compatibility by treating Python None as SketchMode.NONE in set_mode() method
- Added comprehensive debug logging for mode changes and interaction state tracking
- Resolved integration issue where persistent constraint modes were prematurely reset by main app
- Ensured point dragging is only enabled in NONE mode, preventing accidental polyline creation

This fixes the reported issue where deactivating the line tool would still create lines when dragging,
and ensures proper mode transitions between drawing tools and selection/drag mode.
2025-08-16 22:30:18 +02:00

893 lines
30 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Default Pint units definition file
# Based on the International System of Units
# Language: english
# :copyright: 2013,2019 by Pint Authors, see AUTHORS for more details.
# Syntax
# ======
# Units
# -----
# <canonical name> = <relation to another unit or dimension> [= <symbol>] [= <alias>] [ = <alias> ] [...]
#
# The canonical name and aliases should be expressed in singular form.
# Pint automatically deals with plurals built by adding 's' to the singular form; plural
# forms that don't follow this rule should be instead explicitly listed as aliases.
#
# If a unit has no symbol and one wants to define aliases, then the symbol should be
# conventionally set to _.
#
# Example:
# millennium = 1e3 * year = _ = millennia
#
#
# Prefixes
# --------
# <prefix>- = <amount> [= <symbol>] [= <alias>] [ = <alias> ] [...]
#
# Example:
# deca- = 1e+1 = da- = deka-
#
#
# Derived dimensions
# ------------------
# [dimension name] = <relation to other dimensions>
#
# Example:
# [density] = [mass] / [volume]
#
# Note that primary dimensions don't need to be declared; they can be
# defined for the first time in a unit definition.
# E.g. see below `meter = [length]`
#
#
# Additional aliases
# ------------------
# @alias <canonical name or previous alias> = <alias> [ = <alias> ] [...]
#
# Used to add aliases to already existing unit definitions.
# Particularly useful when one wants to enrich definitions
# from defaults_en.txt with custom aliases.
#
# Example:
# @alias meter = my_meter
# See also: https://pint.readthedocs.io/en/latest/defining.html
@defaults
group = international
system = mks
@end
#### PREFIXES ####
# decimal prefixes
quecto- = 1e-30 = q-
ronto- = 1e-27 = r-
yocto- = 1e-24 = y-
zepto- = 1e-21 = z-
atto- = 1e-18 = a-
femto- = 1e-15 = f-
pico- = 1e-12 = p-
nano- = 1e-9 = n-
# The micro (U+00B5) and Greek mu (U+03BC) are both valid prefixes,
# and they often use the same glyph.
micro- = 1e-6 = µ- = μ- = u-
milli- = 1e-3 = m-
centi- = 1e-2 = c-
deci- = 1e-1 = d-
deca- = 1e+1 = da- = deka-
hecto- = 1e2 = h-
kilo- = 1e3 = k-
mega- = 1e6 = M-
giga- = 1e9 = G-
tera- = 1e12 = T-
peta- = 1e15 = P-
exa- = 1e18 = E-
zetta- = 1e21 = Z-
yotta- = 1e24 = Y-
ronna- = 1e27 = R-
quetta- = 1e30 = Q-
# binary_prefixes
kibi- = 2**10 = Ki-
mebi- = 2**20 = Mi-
gibi- = 2**30 = Gi-
tebi- = 2**40 = Ti-
pebi- = 2**50 = Pi-
exbi- = 2**60 = Ei-
zebi- = 2**70 = Zi-
yobi- = 2**80 = Yi-
# extra_prefixes
semi- = 0.5 = _ = demi-
sesqui- = 1.5
#### BASE UNITS ####
meter = [length] = m = metre
second = [time] = s = sec
ampere = [current] = A = amp
candela = [luminosity] = cd = candle
gram = [mass] = g
mole = [substance] = mol
kelvin = [temperature]; offset: 0 = K = degK = °K = degree_Kelvin = degreeK # older names supported for compatibility
radian = [] = rad
bit = []
count = []
#### CONSTANTS ####
@import constants_en.txt
#### UNITS ####
# Common and less common, grouped by quantity.
# Conversion factors are exact (except when noted),
# although floating-point conversion may introduce inaccuracies
# Angle
turn = 2 * π * radian = _ = revolution = cycle = circle
degree = π / 180 * radian = deg = arcdeg = arcdegree = angular_degree
arcminute = degree / 60 = arcmin = arc_minute = angular_minute
arcsecond = arcminute / 60 = arcsec = arc_second = angular_second
milliarcsecond = 1e-3 * arcsecond = mas
grade = π / 200 * radian = grad = gon
mil = π / 32000 * radian
# Solid angle
steradian = radian ** 2 = sr
square_degree = (π / 180) ** 2 * sr = sq_deg = sqdeg
# Information
baud = bit / second = Bd = bps
byte = 8 * bit = B = octet
# byte = 8 * bit = _ = octet
## NOTE: B (byte) symbol can conflict with Bell
# Ratios
percent = 0.01 = %
ppm = 1e-6
# Length
angstrom = 1e-10 * meter = Å = ångström = Å
micron = micrometer = µ = μ
fermi = femtometer = fm
light_year = speed_of_light * julian_year = ly = lightyear
astronomical_unit = 149597870700 * meter = au # since Aug 2012
parsec = 1 / tansec * astronomical_unit = pc
nautical_mile = 1852 * meter = nmi
bohr = hbar / (alpha * m_e * c) = a_0 = a0 = bohr_radius = atomic_unit_of_length = a_u_length
x_unit_Cu = K_alpha_Cu_d_220 * d_220 / 1537.4 = Xu_Cu
x_unit_Mo = K_alpha_Mo_d_220 * d_220 / 707.831 = Xu_Mo
angstrom_star = K_alpha_W_d_220 * d_220 / 0.2090100 = Å_star
planck_length = (hbar * gravitational_constant / c ** 3) ** 0.5
# Mass
metric_ton = 1e3 * kilogram = t = tonne
unified_atomic_mass_unit = atomic_mass_constant = u = amu
dalton = atomic_mass_constant = Da
grain = 64.79891 * milligram = gr
gamma_mass = microgram
carat = 200 * milligram = ct = karat
planck_mass = (hbar * c / gravitational_constant) ** 0.5
# Time
minute = 60 * second = min
hour = 60 * minute = h = hr
day = 24 * hour = d
week = 7 * day
fortnight = 2 * week
year = 365.25 * day = a = yr = julian_year
month = year / 12
# decade = 10 * year
## NOTE: decade [time] can conflict with decade [dimensionless]
century = 100 * year = _ = centuries
millennium = 1e3 * year = _ = millennia
eon = 1e9 * year
shake = 1e-8 * second
svedberg = 1e-13 * second
atomic_unit_of_time = hbar / E_h = a_u_time
gregorian_year = 365.2425 * day
sidereal_year = 365.256363004 * day # approximate, as of J2000 epoch
tropical_year = 365.242190402 * day # approximate, as of J2000 epoch
common_year = 365 * day
leap_year = 366 * day
sidereal_day = day / 1.00273790935079524 # approximate
sidereal_month = 27.32166155 * day # approximate
tropical_month = 27.321582 * day # approximate
synodic_month = 29.530589 * day = _ = lunar_month # approximate
planck_time = (hbar * gravitational_constant / c ** 5) ** 0.5
# Temperature
degree_Celsius = kelvin; offset: 273.15 = °C = celsius = degC = degreeC
degree_Rankine = 5 / 9 * kelvin; offset: 0 = °R = rankine = degR = degreeR
degree_Fahrenheit = 5 / 9 * kelvin; offset: 233.15 + 200 / 9 = °F = fahrenheit = degF = degreeF
degree_Reaumur = 4 / 5 * kelvin; offset: 273.15 = °Re = reaumur = degRe = degreeRe = degree_Réaumur = réaumur
atomic_unit_of_temperature = E_h / k = a_u_temp
planck_temperature = (hbar * c ** 5 / gravitational_constant / k ** 2) ** 0.5
# Area
[area] = [length] ** 2
are = 100 * meter ** 2
barn = 1e-28 * meter ** 2 = b
darcy = centipoise * centimeter ** 2 / (second * atmosphere)
hectare = 100 * are = ha
# Volume
[volume] = [length] ** 3
liter = decimeter ** 3 = l = L = litre
cubic_centimeter = centimeter ** 3 = cc
lambda = microliter = λ
stere = meter ** 3
# Frequency
[frequency] = 1 / [time]
hertz = 1 / second = Hz
revolutions_per_minute = revolution / minute = rpm
revolutions_per_second = revolution / second = rps
counts_per_second = count / second = cps
# Wavenumber
[wavenumber] = 1 / [length]
reciprocal_centimeter = 1 / cm = cm_1 = kayser
# Velocity
[velocity] = [length] / [time]
[speed] = [velocity]
knot = nautical_mile / hour = kt = knot_international = international_knot
mile_per_hour = mile / hour = mph = MPH
kilometer_per_hour = kilometer / hour = kph = KPH
kilometer_per_second = kilometer / second = kps
meter_per_second = meter / second = mps
foot_per_second = foot / second = fps
# Volumetric Flow Rate
[volumetric_flow_rate] = [volume] / [time]
sverdrup = 1e6 * meter ** 3 / second = sv
# Acceleration
[acceleration] = [velocity] / [time]
galileo = centimeter / second ** 2 = Gal
# Force
[force] = [mass] * [acceleration]
newton = kilogram * meter / second ** 2 = N
dyne = gram * centimeter / second ** 2 = dyn
force_kilogram = g_0 * kilogram = kgf = kilogram_force = pond
force_gram = g_0 * gram = gf = gram_force
force_metric_ton = g_0 * metric_ton = tf = metric_ton_force = force_t = t_force
atomic_unit_of_force = E_h / a_0 = a_u_force
# Energy
[energy] = [force] * [length]
joule = newton * meter = J
erg = dyne * centimeter
watt_hour = watt * hour = Wh = watthour
electron_volt = e * volt = eV
rydberg = * c * R_inf = Ry
hartree = 2 * rydberg = E_h = Eh = hartree_energy = atomic_unit_of_energy = a_u_energy
calorie = 4.184 * joule = cal = thermochemical_calorie = cal_th
international_calorie = 4.1868 * joule = cal_it = international_steam_table_calorie
fifteen_degree_calorie = 4.1855 * joule = cal_15
british_thermal_unit = 1055.056 * joule = Btu = BTU = Btu_iso
international_british_thermal_unit = 1e3 * pound / kilogram * degR / kelvin * international_calorie = Btu_it
thermochemical_british_thermal_unit = 1e3 * pound / kilogram * degR / kelvin * calorie = Btu_th
quadrillion_Btu = 1e15 * Btu = quad
therm = 1e5 * Btu = thm = EC_therm
US_therm = 1.054804e8 * joule # approximate, no exact definition
ton_TNT = 1e9 * calorie = tTNT
tonne_of_oil_equivalent = 1e10 * international_calorie = toe
atmosphere_liter = atmosphere * liter = atm_l
# Power
[power] = [energy] / [time]
watt = joule / second = W
volt_ampere = volt * ampere = VA
horsepower = 550 * foot * force_pound / second = hp = UK_horsepower = hydraulic_horsepower
boiler_horsepower = 33475 * Btu / hour # unclear which Btu
metric_horsepower = 75 * force_kilogram * meter / second
electrical_horsepower = 746 * watt
refrigeration_ton = 12e3 * Btu / hour = _ = ton_of_refrigeration # approximate, no exact definition
cooling_tower_ton = 1.25 * refrigeration_ton # approximate, no exact definition
standard_liter_per_minute = atmosphere * liter / minute = slpm = slm
conventional_watt_90 = K_J90 ** 2 * R_K90 / (K_J ** 2 * R_K) * watt = W_90
# Momentum
[momentum] = [length] * [mass] / [time]
# Density (as auxiliary for pressure)
[density] = [mass] / [volume]
mercury = 13.5951 * kilogram / liter = Hg = Hg_0C = Hg_32F = conventional_mercury
water = 1.0 * kilogram / liter = H2O = conventional_water
mercury_60F = 13.5568 * kilogram / liter = Hg_60F # approximate
water_39F = 0.999972 * kilogram / liter = water_4C # approximate
water_60F = 0.999001 * kilogram / liter # approximate
# Pressure
[pressure] = [force] / [area]
pascal = newton / meter ** 2 = Pa
barye = dyne / centimeter ** 2 = Ba = barie = barad = barrie = baryd
bar = 1e5 * pascal
technical_atmosphere = kilogram * g_0 / centimeter ** 2 = at
torr = atm / 760
pound_force_per_square_inch = force_pound / inch ** 2 = psi
kip_per_square_inch = kip / inch ** 2 = ksi
millimeter_Hg = millimeter * Hg * g_0 = mmHg = mm_Hg = millimeter_Hg_0C
centimeter_Hg = centimeter * Hg * g_0 = cmHg = cm_Hg = centimeter_Hg_0C
inch_Hg = inch * Hg * g_0 = inHg = in_Hg = inch_Hg_32F
inch_Hg_60F = inch * Hg_60F * g_0
inch_H2O_39F = inch * water_39F * g_0
inch_H2O_60F = inch * water_60F * g_0
foot_H2O = foot * water * g_0 = ftH2O = feet_H2O
centimeter_H2O = centimeter * water * g_0 = cmH2O = cm_H2O
sound_pressure_level = 20e-6 * pascal = SPL
# Torque
[torque] = [force] * [length]
foot_pound = foot * force_pound = ft_lb = footpound
# Viscosity
[viscosity] = [pressure] * [time]
poise = 0.1 * Pa * second = P
reyn = psi * second
# Kinematic viscosity
[kinematic_viscosity] = [area] / [time]
stokes = centimeter ** 2 / second = St
# Fluidity
[fluidity] = 1 / [viscosity]
rhe = 1 / poise
# Amount of substance
particle = 1 / N_A = _ = molec = molecule
# Concentration
[concentration] = [substance] / [volume]
molar = mole / liter = M
# Catalytic activity
[activity] = [substance] / [time]
katal = mole / second = kat
enzyme_unit = micromole / minute = U = enzymeunit
# Entropy
[entropy] = [energy] / [temperature]
clausius = calorie / kelvin = Cl
# Molar entropy
[molar_entropy] = [entropy] / [substance]
entropy_unit = calorie / kelvin / mole = eu
# Radiation
becquerel = counts_per_second = Bq
curie = 3.7e10 * becquerel = Ci
rutherford = 1e6 * becquerel = Rd
gray = joule / kilogram = Gy
sievert = joule / kilogram = Sv
rads = 0.01 * gray
rem = 0.01 * sievert
roentgen = 2.58e-4 * coulomb / kilogram = _ = röntgen # approximate, depends on medium
# Heat transimission
[heat_transmission] = [energy] / [area]
peak_sun_hour = 1e3 * watt_hour / meter ** 2 = PSH
langley = thermochemical_calorie / centimeter ** 2 = Ly
# Luminance
[luminance] = [luminosity] / [area]
nit = candela / meter ** 2
stilb = candela / centimeter ** 2
lambert = 1 / π * candela / centimeter ** 2
# Luminous flux
[luminous_flux] = [luminosity]
lumen = candela * steradian = lm
# Illuminance
[illuminance] = [luminous_flux] / [area]
lux = lumen / meter ** 2 = lx
# Intensity
[intensity] = [power] / [area]
atomic_unit_of_intensity = 0.5 * ε_0 * c * atomic_unit_of_electric_field ** 2 = a_u_intensity
# Current
biot = 10 * ampere = Bi
abampere = biot = abA
atomic_unit_of_current = e / atomic_unit_of_time = a_u_current
mean_international_ampere = mean_international_volt / mean_international_ohm = A_it
US_international_ampere = US_international_volt / US_international_ohm = A_US
conventional_ampere_90 = K_J90 * R_K90 / (K_J * R_K) * ampere = A_90
planck_current = (c ** 6 / gravitational_constant / k_C) ** 0.5
# Charge
[charge] = [current] * [time]
coulomb = ampere * second = C
abcoulomb = 10 * C = abC
faraday = e * N_A * mole
conventional_coulomb_90 = K_J90 * R_K90 / (K_J * R_K) * coulomb = C_90
ampere_hour = ampere * hour = Ah
# Electric potential
[electric_potential] = [energy] / [charge]
volt = joule / coulomb = V
abvolt = 1e-8 * volt = abV
mean_international_volt = 1.00034 * volt = V_it # approximate
US_international_volt = 1.00033 * volt = V_US # approximate
conventional_volt_90 = K_J90 / K_J * volt = V_90
# Electric field
[electric_field] = [electric_potential] / [length]
atomic_unit_of_electric_field = e * k_C / a_0 ** 2 = a_u_electric_field
# Electric displacement field
[electric_displacement_field] = [charge] / [area]
# Reduced electric field
[reduced_electric_field] = [electric_field] * [area]
townsend = 1e-21 * V * m^2 = Td
# Resistance
[resistance] = [electric_potential] / [current]
ohm = volt / ampere = Ω
abohm = 1e-9 * ohm = abΩ
mean_international_ohm = 1.00049 * ohm = Ω_it = ohm_it # approximate
US_international_ohm = 1.000495 * ohm = Ω_US = ohm_US # approximate
conventional_ohm_90 = R_K / R_K90 * ohm = Ω_90 = ohm_90
# Resistivity
[resistivity] = [resistance] * [length]
# Conductance
[conductance] = [current] / [electric_potential]
siemens = ampere / volt = S = mho
absiemens = 1e9 * siemens = abS = abmho
# Capacitance
[capacitance] = [charge] / [electric_potential]
farad = coulomb / volt = F
abfarad = 1e9 * farad = abF
conventional_farad_90 = R_K90 / R_K * farad = F_90
# Magnetic flux
[magnetic_flux] = [electric_potential] * [time]
weber = volt * second = Wb
unit_pole = µ_0 * biot * centimeter
# Inductance
[inductance] = [magnetic_flux] / [current]
henry = weber / ampere = H
abhenry = 1e-9 * henry = abH
conventional_henry_90 = R_K / R_K90 * henry = H_90
# Magnetic field
[magnetic_field] = [magnetic_flux] / [area]
tesla = weber / meter ** 2 = T
gamma = 1e-9 * tesla = γ
# Magnetomotive force
[magnetomotive_force] = [current]
ampere_turn = ampere = At
biot_turn = biot
gilbert = 1 / (4 * π) * biot_turn = Gb
# Magnetic field strength
[magnetic_field_strength] = [current] / [length]
# Electric dipole moment
[electric_dipole] = [charge] * [length]
debye = 1e-9 / ζ * coulomb * angstrom = D # formally 1 D = 1e-10 Fr*Å, but we generally want to use it outside the Gaussian context
# Electric quadrupole moment
[electric_quadrupole] = [charge] * [area]
buckingham = debye * angstrom
# Magnetic dipole moment
[magnetic_dipole] = [current] * [area]
bohr_magneton = e * hbar / (2 * m_e) = µ_B = mu_B
nuclear_magneton = e * hbar / (2 * m_p) = µ_N = mu_N
# Logaritmic Unit Definition
# Unit = scale; logbase; logfactor
# x_dB = [logfactor] * log( x_lin / [scale] ) / log( [logbase] )
# Logaritmic Units of dimensionless quantity: [ https://en.wikipedia.org/wiki/Level_(logarithmic_quantity) ]
decibelmilliwatt = 1e-3 watt; logbase: 10; logfactor: 10 = dBm
decibelmicrowatt = 1e-6 watt; logbase: 10; logfactor: 10 = dBu
decibel = 1 ; logbase: 10; logfactor: 10 = dB
# bell = 1 ; logbase: 10; logfactor: = B
## NOTE: B (Bell) symbol conflicts with byte
decade = 1 ; logbase: 10; logfactor: 1
## NOTE: decade [time] can conflict with decade [dimensionless]
octave = 1 ; logbase: 2; logfactor: 1 = oct
neper = 1 ; logbase: 2.71828182845904523536028747135266249775724709369995; logfactor: 0.5 = Np
# neper = 1 ; logbase: eulers_number; logfactor: 0.5 = Np
#### UNIT GROUPS ####
# Mostly for length, area, volume, mass, force
# (customary or specialized units)
@group USCSLengthInternational
thou = 1e-3 * inch = th = mil_length
inch = yard / 36 = in = international_inch = inches = international_inches
hand = 4 * inch
foot = yard / 3 = ft = international_foot = feet = international_feet
yard = 0.9144 * meter = yd = international_yard # since Jul 1959
mile = 1760 * yard = mi = international_mile
circular_mil = π / 4 * mil_length ** 2 = cmil
square_inch = inch ** 2 = sq_in = square_inches
square_foot = foot ** 2 = sq_ft = square_feet
square_yard = yard ** 2 = sq_yd
square_mile = mile ** 2 = sq_mi
cubic_inch = in ** 3 = cu_in
cubic_foot = ft ** 3 = cu_ft = cubic_feet
cubic_yard = yd ** 3 = cu_yd
@end
@group USCSLengthSurvey
link = 1e-2 * chain = li = survey_link
survey_foot = 1200 / 3937 * meter = sft
fathom = 6 * survey_foot
rod = 16.5 * survey_foot = rd = pole = perch
chain = 4 * rod
furlong = 40 * rod = fur
cables_length = 120 * fathom
survey_mile = 5280 * survey_foot = smi = us_statute_mile
league = 3 * survey_mile
square_rod = rod ** 2 = sq_rod = sq_pole = sq_perch
acre = 10 * chain ** 2
square_survey_mile = survey_mile ** 2 = _ = section
square_league = league ** 2
acre_foot = acre * survey_foot = _ = acre_feet
@end
@group USCSDryVolume
dry_pint = bushel / 64 = dpi = US_dry_pint
dry_quart = bushel / 32 = dqt = US_dry_quart
dry_gallon = bushel / 8 = dgal = US_dry_gallon
peck = bushel / 4 = pk
bushel = 2150.42 cubic_inch = bu
dry_barrel = 7056 cubic_inch = _ = US_dry_barrel
board_foot = ft * ft * in = FBM = board_feet = BF = BDFT = super_foot = superficial_foot = super_feet = superficial_feet
@end
@group USCSLiquidVolume
minim = pint / 7680
fluid_dram = pint / 128 = fldr = fluidram = US_fluid_dram = US_liquid_dram
fluid_ounce = pint / 16 = floz = US_fluid_ounce = US_liquid_ounce
gill = pint / 4 = gi = liquid_gill = US_liquid_gill
pint = quart / 2 = pt = liquid_pint = US_pint
fifth = gallon / 5 = _ = US_liquid_fifth
quart = gallon / 4 = qt = liquid_quart = US_liquid_quart
gallon = 231 * cubic_inch = gal = liquid_gallon = US_liquid_gallon
@end
@group USCSVolumeOther
teaspoon = fluid_ounce / 6 = tsp
tablespoon = fluid_ounce / 2 = tbsp
shot = 3 * tablespoon = jig = US_shot
cup = pint / 2 = cp = liquid_cup = US_liquid_cup
barrel = 31.5 * gallon = bbl
oil_barrel = 42 * gallon = oil_bbl
beer_barrel = 31 * gallon = beer_bbl
hogshead = 63 * gallon
@end
@group Avoirdupois
dram = pound / 256 = dr = avoirdupois_dram = avdp_dram = drachm
ounce = pound / 16 = oz = avoirdupois_ounce = avdp_ounce
pound = 7e3 * grain = lb = avoirdupois_pound = avdp_pound
stone = 14 * pound
quarter = 28 * stone
bag = 94 * pound
hundredweight = 100 * pound = cwt = short_hundredweight
long_hundredweight = 112 * pound
ton = 2e3 * pound = _ = short_ton
long_ton = 2240 * pound
slug = g_0 * pound * second ** 2 / foot
slinch = g_0 * pound * second ** 2 / inch = blob = slugette
force_ounce = g_0 * ounce = ozf = ounce_force
force_pound = g_0 * pound = lbf = pound_force
force_ton = g_0 * ton = _ = ton_force = force_short_ton = short_ton_force
force_long_ton = g_0 * long_ton = _ = long_ton_force
kip = 1e3 * force_pound
poundal = pound * foot / second ** 2 = pdl
@end
@group AvoirdupoisUK using Avoirdupois
UK_hundredweight = long_hundredweight = UK_cwt
UK_ton = long_ton
UK_force_ton = force_long_ton = _ = UK_ton_force
@end
@group AvoirdupoisUS using Avoirdupois
US_hundredweight = hundredweight = US_cwt
US_ton = ton
US_force_ton = force_ton = _ = US_ton_force
@end
@group Troy
pennyweight = 24 * grain = dwt
troy_ounce = 480 * grain = toz = ozt
troy_pound = 12 * troy_ounce = tlb = lbt
@end
@group Apothecary
scruple = 20 * grain
apothecary_dram = 3 * scruple = ap_dr
apothecary_ounce = 8 * apothecary_dram = ap_oz
apothecary_pound = 12 * apothecary_ounce = ap_lb
@end
@group ImperialVolume
imperial_minim = imperial_fluid_ounce / 480
imperial_fluid_scruple = imperial_fluid_ounce / 24
imperial_fluid_drachm = imperial_fluid_ounce / 8 = imperial_fldr = imperial_fluid_dram
imperial_fluid_ounce = imperial_pint / 20 = imperial_floz = UK_fluid_ounce
imperial_gill = imperial_pint / 4 = imperial_gi = UK_gill
imperial_cup = imperial_pint / 2 = imperial_cp = UK_cup
imperial_pint = imperial_gallon / 8 = imperial_pt = UK_pint
imperial_quart = imperial_gallon / 4 = imperial_qt = UK_quart
imperial_gallon = 4.54609 * liter = imperial_gal = UK_gallon
imperial_peck = 2 * imperial_gallon = imperial_pk = UK_pk
imperial_bushel = 8 * imperial_gallon = imperial_bu = UK_bushel
imperial_barrel = 36 * imperial_gallon = imperial_bbl = UK_bbl
@end
@group Printer
pica = inch / 6 = _ = printers_pica
point = pica / 12 = pp = printers_point = big_point = bp
didot = 1 / 2660 * m
cicero = 12 * didot
tex_point = inch / 72.27
tex_pica = 12 * tex_point
tex_didot = 1238 / 1157 * tex_point
tex_cicero = 12 * tex_didot
scaled_point = tex_point / 65536
css_pixel = inch / 96 = px
pixel = [printing_unit] = _ = dot = pel = picture_element
pixels_per_centimeter = pixel / cm = PPCM
pixels_per_inch = pixel / inch = dots_per_inch = PPI = ppi = DPI = printers_dpi
bits_per_pixel = bit / pixel = bpp
@end
@group Textile
tex = gram / kilometer = Tt
dtex = decitex
denier = gram / (9 * kilometer) = den
jute = pound / (14400 * yard) = Tj
aberdeen = jute = Ta
RKM = gf / tex
number_english = 840 * yard / pound = Ne = NeC = ECC
number_meter = kilometer / kilogram = Nm
@end
#### CGS ELECTROMAGNETIC UNITS ####
# === Gaussian system of units ===
@group Gaussian
franklin = erg ** 0.5 * centimeter ** 0.5 = Fr = statcoulomb = statC = esu
statvolt = erg / franklin = statV
statampere = franklin / second = statA
gauss = dyne / franklin = G
maxwell = gauss * centimeter ** 2 = Mx
oersted = dyne / maxwell = Oe = ørsted
statohm = statvolt / statampere = statΩ
statfarad = franklin / statvolt = statF
statmho = statampere / statvolt
@end
# Note this system is not commensurate with SI, as ε_0 and µ_0 disappear;
# some quantities with different dimensions in SI have the same
# dimensions in the Gaussian system (e.g. [Mx] = [Fr], but [Wb] != [C]),
# and therefore the conversion factors depend on the context (not in pint sense)
[gaussian_charge] = [length] ** 1.5 * [mass] ** 0.5 / [time]
[gaussian_current] = [gaussian_charge] / [time]
[gaussian_electric_potential] = [gaussian_charge] / [length]
[gaussian_electric_field] = [gaussian_electric_potential] / [length]
[gaussian_electric_displacement_field] = [gaussian_charge] / [area]
[gaussian_electric_flux] = [gaussian_charge]
[gaussian_electric_dipole] = [gaussian_charge] * [length]
[gaussian_electric_quadrupole] = [gaussian_charge] * [area]
[gaussian_magnetic_field] = [force] / [gaussian_charge]
[gaussian_magnetic_field_strength] = [gaussian_magnetic_field]
[gaussian_magnetic_flux] = [gaussian_magnetic_field] * [area]
[gaussian_magnetic_dipole] = [energy] / [gaussian_magnetic_field]
[gaussian_resistance] = [gaussian_electric_potential] / [gaussian_current]
[gaussian_resistivity] = [gaussian_resistance] * [length]
[gaussian_capacitance] = [gaussian_charge] / [gaussian_electric_potential]
[gaussian_inductance] = [gaussian_electric_potential] * [time] / [gaussian_current]
[gaussian_conductance] = [gaussian_current] / [gaussian_electric_potential]
@context Gaussian = Gau
[gaussian_charge] -> [charge]: value / k_C ** 0.5
[charge] -> [gaussian_charge]: value * k_C ** 0.5
[gaussian_current] -> [current]: value / k_C ** 0.5
[current] -> [gaussian_current]: value * k_C ** 0.5
[gaussian_electric_potential] -> [electric_potential]: value * k_C ** 0.5
[electric_potential] -> [gaussian_electric_potential]: value / k_C ** 0.5
[gaussian_electric_field] -> [electric_field]: value * k_C ** 0.5
[electric_field] -> [gaussian_electric_field]: value / k_C ** 0.5
[gaussian_electric_displacement_field] -> [electric_displacement_field]: value / (4 * π / ε_0) ** 0.5
[electric_displacement_field] -> [gaussian_electric_displacement_field]: value * (4 * π / ε_0) ** 0.5
[gaussian_electric_dipole] -> [electric_dipole]: value / k_C ** 0.5
[electric_dipole] -> [gaussian_electric_dipole]: value * k_C ** 0.5
[gaussian_electric_quadrupole] -> [electric_quadrupole]: value / k_C ** 0.5
[electric_quadrupole] -> [gaussian_electric_quadrupole]: value * k_C ** 0.5
[gaussian_magnetic_field] -> [magnetic_field]: value / (4 * π / µ_0) ** 0.5
[magnetic_field] -> [gaussian_magnetic_field]: value * (4 * π / µ_0) ** 0.5
[gaussian_magnetic_flux] -> [magnetic_flux]: value / (4 * π / µ_0) ** 0.5
[magnetic_flux] -> [gaussian_magnetic_flux]: value * (4 * π / µ_0) ** 0.5
[gaussian_magnetic_field_strength] -> [magnetic_field_strength]: value / (4 * π * µ_0) ** 0.5
[magnetic_field_strength] -> [gaussian_magnetic_field_strength]: value * (4 * π * µ_0) ** 0.5
[gaussian_magnetic_dipole] -> [magnetic_dipole]: value * (4 * π / µ_0) ** 0.5
[magnetic_dipole] -> [gaussian_magnetic_dipole]: value / (4 * π / µ_0) ** 0.5
[gaussian_resistance] -> [resistance]: value * k_C
[resistance] -> [gaussian_resistance]: value / k_C
[gaussian_resistivity] -> [resistivity]: value * k_C
[resistivity] -> [gaussian_resistivity]: value / k_C
[gaussian_capacitance] -> [capacitance]: value / k_C
[capacitance] -> [gaussian_capacitance]: value * k_C
[gaussian_inductance] -> [inductance]: value * k_C
[inductance] -> [gaussian_inductance]: value / k_C
[gaussian_conductance] -> [conductance]: value / k_C
[conductance] -> [gaussian_conductance]: value * k_C
@end
# === ESU system of units ===
# (where different from Gaussian)
# See note for Gaussian system too
@group ESU using Gaussian
statweber = statvolt * second = statWb
stattesla = statweber / centimeter ** 2 = statT
stathenry = statweber / statampere = statH
@end
[esu_charge] = [length] ** 1.5 * [mass] ** 0.5 / [time]
[esu_current] = [esu_charge] / [time]
[esu_electric_potential] = [esu_charge] / [length]
[esu_magnetic_flux] = [esu_electric_potential] * [time]
[esu_magnetic_field] = [esu_magnetic_flux] / [area]
[esu_magnetic_field_strength] = [esu_current] / [length]
[esu_magnetic_dipole] = [esu_current] * [area]
@context ESU = esu
[esu_magnetic_field] -> [magnetic_field]: value * k_C ** 0.5
[magnetic_field] -> [esu_magnetic_field]: value / k_C ** 0.5
[esu_magnetic_flux] -> [magnetic_flux]: value * k_C ** 0.5
[magnetic_flux] -> [esu_magnetic_flux]: value / k_C ** 0.5
[esu_magnetic_field_strength] -> [magnetic_field_strength]: value / (4 * π / ε_0) ** 0.5
[magnetic_field_strength] -> [esu_magnetic_field_strength]: value * (4 * π / ε_0) ** 0.5
[esu_magnetic_dipole] -> [magnetic_dipole]: value / k_C ** 0.5
[magnetic_dipole] -> [esu_magnetic_dipole]: value * k_C ** 0.5
@end
#### CONVERSION CONTEXTS ####
@context(n=1) spectroscopy = sp
# n index of refraction of the medium.
[length] <-> [frequency]: speed_of_light / n / value
[frequency] -> [energy]: planck_constant * value
[energy] -> [frequency]: value / planck_constant
# allow wavenumber / kayser
[wavenumber] <-> [length]: 1 / value
@end
@context boltzmann
[temperature] -> [energy]: boltzmann_constant * value
[energy] -> [temperature]: value / boltzmann_constant
@end
@context energy
[energy] -> [energy] / [substance]: value * N_A
[energy] / [substance] -> [energy]: value / N_A
[energy] -> [mass]: value / c ** 2
[mass] -> [energy]: value * c ** 2
@end
@context(mw=0,volume=0,solvent_mass=0) chemistry = chem
# mw is the molecular weight of the species
# volume is the volume of the solution
# solvent_mass is the mass of solvent in the solution
# moles -> mass require the molecular weight
[substance] -> [mass]: value * mw
[mass] -> [substance]: value / mw
# moles/volume -> mass/volume and moles/mass -> mass/mass
# require the molecular weight
[substance] / [volume] -> [mass] / [volume]: value * mw
[mass] / [volume] -> [substance] / [volume]: value / mw
[substance] / [mass] -> [mass] / [mass]: value * mw
[mass] / [mass] -> [substance] / [mass]: value / mw
# moles/volume -> moles requires the solution volume
[substance] / [volume] -> [substance]: value * volume
[substance] -> [substance] / [volume]: value / volume
# moles/mass -> moles requires the solvent (usually water) mass
[substance] / [mass] -> [substance]: value * solvent_mass
[substance] -> [substance] / [mass]: value / solvent_mass
# moles/mass -> moles/volume require the solvent mass and the volume
[substance] / [mass] -> [substance]/[volume]: value * solvent_mass / volume
[substance] / [volume] -> [substance] / [mass]: value / solvent_mass * volume
@end
@context textile
# Allow switching between Direct count system (i.e. tex) and
# Indirect count system (i.e. Ne, Nm)
[mass] / [length] <-> [length] / [mass]: 1 / value
@end
#### SYSTEMS OF UNITS ####
@system SI
second
meter
kilogram
ampere
kelvin
mole
candela
@end
@system mks using international
meter
kilogram
second
@end
@system cgs using international, Gaussian, ESU
centimeter
gram
second
@end
@system atomic using international
# based on unit m_e, e, hbar, k_C, k
bohr: meter
electron_mass: gram
atomic_unit_of_time: second
atomic_unit_of_current: ampere
atomic_unit_of_temperature: kelvin
@end
@system Planck using international
# based on unit c, gravitational_constant, hbar, k_C, k
planck_length: meter
planck_mass: gram
planck_time: second
planck_current: ampere
planck_temperature: kelvin
@end
@system imperial using ImperialVolume, USCSLengthInternational, AvoirdupoisUK
yard
pound
@end
@system US using USCSLiquidVolume, USCSDryVolume, USCSVolumeOther, USCSLengthInternational, USCSLengthSurvey, AvoirdupoisUS
yard
pound
@end