Saya ingin membuat pola lubang speaker seperti ini:
Tapi saya tidak yakin harus mulai dari mana. Apakah ini dapat dicapai tanpa pemosisian yang melelahkan di Illustrator atau perangkat lunak serupa?
Saya ingin membuat pola lubang speaker seperti ini:
Tapi saya tidak yakin harus mulai dari mana. Apakah ini dapat dicapai tanpa pemosisian yang melelahkan di Illustrator atau perangkat lunak serupa?
Jawaban:
Saya akan menambahkan metode saya, karena menurut saya sepertinya itu yang paling sederhana. Pada dasarnya, Anda:
Berikut ini skrip Python (membutuhkan svgwrite
dan math
):
"""
This script has two purposes:
- Simple demonstration of using Python (specifically the svgwrite library) to create an SVG file
- Answer the question http://graphicdesign.stackexchange.com/q/56200/21332
"""
# n[x] should give the number of circles at a distance of (x+1)*d from the center
d = 30
n = [8, 16, 20, 20, 20]
r = 7 # radius of each circle
# Calculate the center points of each circle
circles = [(0, 0)] # There is always one circle in the middle
import math
for i in range(0, len(n)):
m = n[i] # m is the number of circle in this "row", i is the number of the row
for j in range(0, m): # for each circle...
phi = 2*math.pi*j/m # Calculate the angle at which the circle will be
# Convert polar coordinates to cartesian
x = d*(i+1)*math.cos(phi)
y = d*(i+1)*math.sin(phi)
circles.append((x, y))
# Write circles to SVG
import svgwrite
# Determine correct size of drawing
width = max([c[0] for c in circles])*2.2
height = max([c[1] for c in circles])*2.2
dwg = svgwrite.Drawing('demo.svg', size = (width, height)) # output will be in the same folder as this script
# offsets for shifting all circles so that the SVG can be easily viewed in browser
x_offset = min([c[0] for c in circles])*1.1
y_offset = min([c[1] for c in circles])*1.1
for c in circles:
adjusted_x = c[0] - x_offset
adjusted_y = c[1] - y_offset
dwg.add(svgwrite.shapes.Circle((adjusted_x, adjusted_y), r))
# Save the file
dwg.save()
# Print SVG source to console
print(dwg.tostring())
Ini akan membuat file SVG di direktori tempatnya. Anda dapat membuka ini di browser:
Atau di Illustrator:
Anda harus menggunakan jendela Illustrator yang lebih besar daripada saya, meskipun, saya agak terlalu kecil untuk bekerja dengan nyaman ...
Jika Anda tidak dapat membuat skrip Python membuat file (mungkin menjalankan ini dalam interpreter Python online) maka cukup komentar dwg.save()
. Baris terakhir mencetak isi SVG ke konsol, Anda dapat menempelkan ini ke Notepad, lalu simpan sebagai my file.svg
.
Saya terbawa suasana dan menambahkan beberapa fitur "rapi", seperti:
Anda dapat dengan mudah meninggalkan ini, karena Illustrator tidak menyembunyikan objek di luar batas kanvas dan memungkinkan Anda untuk mengubah ukuran kanvas secara manual:
Anda tidak benar-benar menentukan apakah gambar tersebut adalah sesuatu yang Anda hasilkan sendiri di TK, ada di tangan atau tidak. Jika Anda sudah memiliki kode ini maka Anda dapat mengekspor kanvas aplikasi TK sebagai EPS dan membukanya di ilustrator. Yang perlu Anda lakukan hanyalah menelepon canvas.postscript()
.
Contoh sederhana dalam python 2:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from Tkinter import *
import math
def circle(c, x, y, r=10):
return c.create_oval(x-r, y-r, x+r, y+r, width=0, fill="black")
def draw_circles(c, num, r):
step = (2.0*math.pi)/float(num)
for i in range(num):
x = 400 + r * math.sin(i*step)
y = 400 + r * math.cos(i*step)
circle(c, x, y)
main_window = Tk()
main_window.title('Pattern to EPS')
canvas = Canvas(main_window,
width=800, height=800,
bg = 'white')
circle(canvas, 400, 400)
for i in range(1, 6):
draw_circles(canvas, i*8, i*60)
canvas.pack()
# next line generates a eps file
canvas.postscript(file = "pattern.eps", width=800, height=800 )
# uncomment next line if you want to see the tk window
# main_window.mainloop()
Ini menghasilkan file bernama "patten.eps"
.
Gambar 1 : Membuka EPS yang dihasilkan dalam ilustrator.
Anda dapat melakukan ini dalam extendedScript, SVG atau langsung dengan menulis program EPS yang semuanya mudah dilakukan (lihat lampiran di bawah untuk beberapa contoh). Lihat posting berikut untuk sumber daya:
PS : Saya tidak tahu apakah skripnya layak karena dibutuhkan sekitar 3 menit untuk menarik mereka dengan bantuan alat putar dan Ctrl+D
Gambar 2 : Satu dering dengan metode di atas
%!PS-Adobe-3.0 EPSF-3.0
%%BoundingBox: 0 0 800 800
%%Title: pattern
%%Creator: joojaa
%%CreationDate: 2015-07-08
%%EndComments
/c {newpath 10 0 360 arc closepath fill} def
/cr {
dup 8 mul 2 dict begin /i exch def /r exch 60 mul def
1 1 i {360 i div mul dup sin exch cos r mul exch r mul c} for
end
} def
400 400 translate
0 0 c
1 1 6 {cr} for
%%EOF
#target illustrator
var doc = app.activeDocument;
function circle(x,y) {
doc.pathItems.ellipse(x+5,y-5,10,10);
}
function draw_circles(num, r){
var step = (2.0*Math.PI)/num;
for (var i = 0; i < num; i++) {
var x = -200 + r * Math.sin(i*step);
var y = 200 + r * Math.cos(i*step);
circle(x, y);
}
}
circle(-200,200);
for (var i = 1; i <= 6; i++) {
draw_circles(i*8, i*30);
}
Anda dapat dengan cepat membuat sesuatu yang mirip dengan contoh Anda di Illustrator menggunakan stroke putus-putus. Untuk menggambar cincin dengan jarak yang sama dengan mudah, saya akan menggunakan Polar Grid Tool .
Maka itu hanya masalah mengatur Stroke pada cincin untuk putus dengan celah yang sesuai dengan keinginan Anda:
Anda tentu saja dapat menyempurnakan setiap baris untuk menambahkan lebih banyak titik jika diperlukan, cukup menambah atau mengurangi nilai celah individual. Dengan kotak celah aktif, Anda dapat menggunakan roda gulir Anda untuk dengan cepat mengubah nilainya. Tahan Ctrl / Cmdsambil menggulir untuk menyesuaikan kenaikan yang lebih halus
Masalah dengan metode ini adalah mungkin ada beberapa tumpang tindih di beberapa titik:
Itu mungkin perlu diedit secara manual jika Anda ingin mereka menjadi sempurna. Harus ada paling banyak 1 tumpang tindih per baris.
Efek distorsi dan transformasi ilustrator sangat cocok untuk pola pengulangan seperti ini, tetapi untuk mendapatkan pola yang tepat itu membutuhkan beberapa penyesuaian. Mulai dengan garis putus-putus (dengan 11 titik sebagai contoh Anda)
Tambahkan Efek Transform via Effect > Distort & Transform > Transform...
Anda akan melihat bahwa baris-baris dalam memiliki terlalu banyak titik. Di situlah tweaking manual masuk, tetapi ini akan membuat Anda cukup jauh untuk mencari tahu sisanya.
Gunakan Inkscape:
Dan hasilnya (menggunakan 22,5 derajat untuk mencocokkan gambar OP):