The following code generates a 3D graphic for a crystallographic structure. But when Tube
is used to link the atoms, they are left out of the 3D printing previewer. Cylinder
does generate the links, but crashes the Kernel when sent to a 3D service. Any ways to make the structure?
3D printing of structure (unit cells)
latposCePd20 =
{{1.941555`, 1.49574903880332`, 1.14428425`},
{1.941555`, 9.38828496119668`, 3.4328527499999995`},
{0.`, 6.9377660388033195`, 1.14428425`},
{0.`, 3.9462679611966798`, 3.4328527499999995`}}
latposRhPd20 =
{{1.941555`, 4.48312467969212`, 1.14428425`},
{1.941555`, 6.400909320307879`, 3.4328527499999995`},
{0.`, 9.92514167969212`, 1.14428425`},
{0.`, 0.95889232030788`, 3.4328527499999995`}}
aPd20 = 3.88311`
bPd20 = 10.884034`
cPd20 = 4.577137`
select$radius$center[a_, r1_, r2_] :=
Module[{b = {1.941555`, 1.49574903880332`, 1.14428425`}},
If[r1 <= EuclideanDistance[a, b] <= r2, a, Nothing]]
select$radius$relative[{b_, a_}, r1_, r2_] :=
Module[{},
If[r1 <= EuclideanDistance[a, b] <= r2, {b, a}, Nothing]]
Ce$pos =
select$radius$center[#, 0, 7.5] & /@
Flatten[
Table[
{i aPd20, j bPd20, k cPd20} + # & /@ latposCePd20,
{i, -2, 2}, {j, -2, 2}, {k, -2, 2}],
3];
Rh$pos =
select$radius$center[#, 0, 7.5] & /@
Flatten[
Table[
{i aPd20, j bPd20, k cPd20} + # & /@ latposRhPd20,
{i, -2, 2}, {j, -2, 2}, {k, -2, 2}],
3];
tubes =
Flatten[
Table[
select$radius$relative[{Ce$pos[[i]], Rh$pos[[j]]}, 0, 3.5],
{i, 1, Length[Ce$pos]}, {j, 1, Length[Rh$pos]}],
1];
diagram3D =
Graphics3D[
{Blue, Sphere[#, 2.5/3] & /@ Ce$pos,
Red, Sphere[#, 1.8/3] & /@ Rh$pos,
White, Tube[#, 0.2] & /@ tubes},
ViewPoint -> {20, 0, 0}, Boxed -> False]
Printout3D[diagram3D]
generates a graphic with unlinked spheres!
In the previewer (MacOSX 10.13.2 High Sierra MMA 11.2.0.0) I get this:
It crashes IMaterialise (says there is an error) and Sculpteo gives
select$radius$center[#, 0, 5.5]
but not for these numbersselect$radius$center[#, 0, 7.5]
and higher... $\endgroup$